SQL Server数据库架构与对象相关知识笔记

527 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

1、数据库架构简介

数据库架构是从SQL Server2005版本之后引入的概念。数据库架构独立于创建它的数据厍用户而存在,每个对象都属于一个数据库架构(对象包括表、视图、存储过程、函数、触发器等)

2、 数据库、架构和数据库对象

数据库架构是一个独立于数据库用户的非重复命名空间,用户与架构相互独立,删除用户不会删除架构中的对象。将数据库架构与数据库用户分离有以下几个优点:

1、大大简化了删除数据库用户的操作。删除数据库用户不需要重命名该用户架构所包含的对象。所以在删除创建架构所含对象的用户后,不需要修改和测试显式引用这些对象的应用程序。

2、多个用户可以共享一个默认架构然后进行统一名称解析。

3、可以通过共享默认架构将共享对象存储在为特定应用程序专门创建的架构中,而不一定是dbo架构中。

4、可以用更大的粒度管理对象的权限。

如果数据库用户具有创建架构的权限,就可以在数据库中创建、更改数据库架构,该用户就是架构的所有者,并且可以将架构的所有权转让给其他用户,或者授予其他用户访问该数据库架构的权限,只有架构的所有者才能在架构中创建对象。

确定如何安排架构中的对象,安全是一个很重要的考虑因素。

架构作为一个命名空间——它被用作对象名称的前缀。例如,假设在一个名为System的数据库架构中有一个名为UserInfo的表。架构限定式对象名称(也称为“两部分式对象名称”)是System.UserInfo。

说明:数据库默认的架构为dbo,如果不写架构名称的话默认为dbo。当然如果一个数据库存在多个数据库架构,建议都采用两部分式对象名称的方式。这样可以便于后续的运维和代码的可读性。