2008-10-31 39 views
20

Theo mặc định, đối tượng (bảng, thủ tục lưu trữ, v.v.) được thiết lập với chủ sở hữu/lược đồ dbo (tôi nghĩ ms sql 2000 gọi nó là chủ sở hữu, trong khi đó sql 2005 gọi nó là lược đồ)Giản đồ, Chủ sở hữu đối tượng trong MS SQL

Chủ sở hữu/giản đồ thực sự là vai trò hoặc người dùng trong cơ sở dữ liệu. Tôi đã luôn luôn để mặc định của dbo, nhưng gần đây tôi đã nhìn thấy một số ví dụ trong sách đào tạo microsoft, nơi một số bảng của họ & thủ tục lưu trữ có chủ sở hữu khác nhau/lược đồ. Khi nào nó có lợi để làm điều này và tại sao?

+1

Đừng nhầm lẫn giữa SQL 2000 và SQL 2005, SQL 2000 không hỗ trợ đúng các lược đồ trong khi SQL 2005 thực hiện. Sự khác biệt giữa hai điều là quan trọng. –

+0

Nếu bạn nhìn vào các thuộc tính của một bảng trong sql 2000 nó nói dbo là chủ sở hữu. Nếu bạn nhìn vào các thuộc tính của sql 2005 nó nói dbo là lược đồ. Đây có lẽ là một phần của sự nhầm lẫn của tôi – Jeremy

Trả lời

24

Việc sử dụng lược đồ là đặc biệt có lợi khi bạn có vấn đề về bảo mật.

Nếu bạn có nhiều ứng dụng truy cập cơ sở dữ liệu, bạn có thể không muốn cung cấp cho bộ phận Logistics truy cập vào hồ sơ nguồn nhân lực. Vì vậy, bạn đặt tất cả các bảng Nhân sự của bạn vào một lược đồ giờ và chỉ cho phép truy cập vào nó cho người dùng trong vai trò giờ.

Sáu tháng sau khi xuống đường, Logistics hiện cần biết tài khoản chi phí nội bộ để họ có thể gửi tất cả các bảng màu xanh dương này đến đúng vị trí mọi người. Sau đó, bạn có thể tạo một thủ tục được lưu trữ thực hiện như một người dùng có quyền xem lược đồ hr cũng như lược đồ hậu cần. Người sử dụng Logistics không bao giờ cần phải biết những gì đang xảy ra trong nhân sự và họ vẫn nhận được dữ liệu của họ.

Bạn cũng có thể sử dụng lược đồ theo cách mà cfeduke đã đề xuất và chỉ sử dụng chúng để nhóm những thứ trong trình duyệt đối tượng. Nếu bạn đang làm điều này, chỉ cần cẩn thận vì bạn có thể sẽ tạo ra Person.Address và Company.Address khi bạn thực sự chỉ cần một dbo.Address đơn (tôi không gõ ví dụ của bạn, cfeduke, chỉ sử dụng nó để minh họa cho cả hai các bảng địa chỉ có thể giống nhau hoặc chúng có thể khác và YMMV).

+0

rất đẹp. công việc tuyệt vời về câu trả lời này. đã giúp tôi hôm nay –

+0

@Jeremiah Peschka: Tại sao không chỉ cung cấp quyền truy cập vào các đối tượng trong lược đồ cho một vai trò cụ thể, tức là tại sao không chỉ tạo vai trò có quyền truy cập vào tất cả các đối tượng trong lược đồ? Những lợi ích gì có bằng cách thực hiện nó thông qua các lược đồ và không thông qua các vai trò? – MSIS

+0

Tôi khuyến khích bạn tạo vai trò và kết hợp các vai trò đó với các lược đồ để cung cấp bảo mật chi tiết. Quản lý các quyền riêng lẻ là một việc vặt. Nhưng việc sử dụng vai trò cho phép bạn nhóm người dùng. Các lược đồ cho phép bạn nhóm các đối tượng cơ sở dữ liệu liên quan. Kết hợp cả hai dường như là một chiến thắng tuyệt vời đối với tôi. –

3

Tổ chức

Trong môi trường dev, bản sao sản xuất của các đối tượng là dbo nhưng các nhà phát triển có thể phát triển trong các lược đồ của riêng họ. Sau đó, mã có thể tham khảo bản sao sản phẩm hoặc thay đổi của chúng rất đơn giản. Sử dụng bí danh có thể làm cho kỹ thuật này trở nên đơn giản hơn.


Ngoài ra, cơ sở dữ liệu sản xuất có thể hỗ trợ nhiều hệ thống hoặc hệ thống phụ. Bạn có thể sử dụng các lược đồ riêng biệt để giữ cho các đối tượng đó được nhóm lại.

5

Trong SQL 2000 các lược đồ tương đương với người dùng cơ sở dữ liệu, trong SQL 2005 mỗi lược đồ là một không gian tên riêng biệt tồn tại độc lập với người dùng cơ sở dữ liệu đã tạo ra nó.

Tôi sử dụng lược đồ khi cần tạo các tính năng hoặc mô-đun có thể được sử dụng sau này trong các dự án khác, vì vậy tôi sẽ có thể cách ly các đối tượng cơ sở dữ liệu được sử dụng bởi mô-đun.

4

Tôi đã sử dụng các lược đồ trong các loại không gian tên như trước đây để bạn có thể có nhiều thực thể có tên Địa chỉ ([Person].[Address], [Company].[Address]). Lợi thế của việc này là tổ chức trực quan trong SQL Management Studio, bạn có thể nhận được điều tương tự bằng cách đặt mọi thứ dưới một lược đồ và đặt tên bảng với một số nhận dạng duy nhất (ví dụ: [dbo].[PersonAddress]).

Tôi cũng đã sử dụng chúng cho phát triển so với phát triển nhà phát triển trước khi chạy SQL Server Developer Edition trên tất cả các máy tính của chúng tôi (khi chúng tôi có cơ sở dữ liệu phát triển tập trung trước đó trong sự nghiệp của tôi).

1

This article giải thích rõ, bao gồm các thay đổi từ SQL Server 2000 đến 2005.

Các vấn đề liên quan