Sự khác biệt giữa lược đồ và bảng và cơ sở dữ liệu là gì?


155

Đây có lẽ là một câu hỏi n00blike (hoặc tệ hơn). Nhưng tôi đã luôn xem một lược đồ như một định nghĩa bảng trong cơ sở dữ liệu. Điều này sai hoặc không hoàn toàn chính xác. Tôi không nhớ nhiều từ các khóa học cơ sở dữ liệu của mình.


3
Trong lược đồ oracle chỉ được đề cập đến một người dùng. Đó là khi chúng ta tạo người dùng, lược đồ sẽ được tạo ngay bây giờ, chúng ta có thể thêm các bảng, dạng xem, gói chỉ mục, v.v.
Ali786

Câu trả lời:


242

lược đồ : cơ sở dữ liệu : bảng :: sơ đồ tầng : nhà : phòng


81
Một chút khó hiểu, nhưng không sai; Nhưng bạn có thực sự nghĩ rằng một n00b tự xưng sẽ hiểu điều đó?
Stein G. Strindhaug

6
Tương tự tốt. Tôi sẽ thay đổi "sơ đồ tầng" thành "bản in màu xanh" vì lược đồ không chỉ có các bảng và bản in màu xanh chứa hệ thống dây điện và sưởi ấm và hệ thống ống nước.
Paul Tomblin

4
"Schema" thực sự chỉ có nghĩa là "kế hoạch". Tôi đã thấy nó được sử dụng để chỉ toàn bộ cơ sở dữ liệu, hoặc chỉ một bảng hoặc dạng xem.
MusiGenesis

@Paul: điểm tốt. Ban đầu tôi đã viết "bản thiết kế" nhưng đã thay đổi nó vì nó không thực sự bao hàm "ngôi nhà" (ít nhất là với tôi).
MusiGenesis

4
Phải tôi có xu hướng xem một lược đồ như một người dùng trong Oracle. Vì vậy, các định nghĩa thậm chí thay đổi từ db sang db: D Thật khó chịu.
Robert

123

Một lược đồ quan hệ là định nghĩa logic của một bảng - nó xác định những gì tên của bảng là gì, và những gì các tên và loại của mỗi cột là. Nó giống như một kế hoạch hoặc một kế hoạch chi tiết. Một lược đồ cơ sở dữ liệu là tập hợp các lược đồ quan hệ cho toàn bộ cơ sở dữ liệu.

Một bảng là một cấu trúc với một loạt các hàng (aka "tuples"), mỗi trong số đó có các thuộc tính xác định bởi các giản đồ. Các bảng cũng có thể có các chỉ mục trên chúng để hỗ trợ tìm kiếm các giá trị trên các cột nhất định.

Một cơ sở dữ liệu chính thức là bất kỳ bộ sưu tập dữ liệu nào. Trong bối cảnh này, cơ sở dữ liệu sẽ là một tập hợp các bảng. Một DBMS (Database Management System) là phần mềm (như MySQL, SQL Server, Oracle, vv) để quản lý và điều hành một cơ sở dữ liệu.


1
Một lược đồ cơ sở dữ liệu cũng bao gồm các chỉ mục, khung nhìn, v.v.
Paul Tomblin

1
chắc chắn điều này không đúng một cơ sở dữ liệu không phải là một tập hợp các bảng như vậy. Bạn có thể có 30 cơ sở dữ liệu mà không cần có một bảng chẳng hạn.
Robert

@Robert - điều gì sẽ là điểm có cơ sở dữ liệu mà không có bảng nào trong đó?
Paul Tomblin

16
Ngay cả khi bạn không có bất kỳ bảng nào, đó vẫn là một tập hợp các bảng - đó là một bộ sưu tập các bảng trống .
Jon Skeet

1
@Ian: đừng quên rằng cơ sở dữ liệu cũng sẽ có các ràng buộc - các ràng buộc tham chiếu (khóa chính, khóa ngoại), các ràng buộc duy nhất và kiểm tra các ràng buộc. Nó cũng có thể bao gồm các kích hoạt và thủ tục.
Jonathan Leffler

16

Tóm lại, lược đồ là định nghĩa cho toàn bộ cơ sở dữ liệu, do đó, nó bao gồm các bảng, dạng xem, thủ tục được lưu trữ, chỉ mục, khóa chính và khóa ngoài, v.v.


12

Bài đăng cụ thể này đã được hiển thị chỉ liên quan đến Oracle và định nghĩa về Schema thay đổi khi trong bối cảnh của một DB khác.

Có lẽ điều thú vị là chỉ cần google lên nhưng các thuật ngữ FYI dường như thay đổi trong định nghĩa của họ, đó là điều khó chịu nhất :)

Trong Oracle một cơ sở dữ liệu là một cơ sở dữ liệu. Trong đầu bạn nghĩ về điều này như các tệp dữ liệu và các bản ghi làm lại và sự hiện diện vật lý thực tế trên đĩa của cơ sở dữ liệu (không phải là ví dụ)

Một Schema có hiệu quả là một người dùng. Cụ thể hơn, đó là một tập hợp các bảng / procs / index vv do người dùng sở hữu. Một người dùng khác có một lược đồ khác (các bảng anh ta / cô ta sở hữu) tuy nhiên người dùng cũng có thể thấy bất kỳ lược đồ nào họ đã chọn riêng tư trên đó. Vì vậy, một cơ sở dữ liệu có thể bao gồm hàng trăm lược đồ và mỗi lược đồ hàng trăm bảng. Bạn có thể có các bảng có cùng tên trong các lược đồ khác nhau, trong cùng một cơ sở dữ liệu.

Bảng là một bảng, một tập hợp các hàng và cột chứa dữ liệu và được chứa trong các lược đồ.

Định nghĩa có thể khác nhau trong SQL Server chẳng hạn. Tôi không nhận thức được điều này.


11

Schema hành xử có vẻ như là một đối tượng cha mẹ như đã thấy trong thế giới OOP. Vì vậy, nó không phải là một cơ sở dữ liệu. có lẽ liên kết này là hữu ích.

Nhưng, trong MySQL, hai cái này tương đương nhau. Từ khóa DATABASE hoặc DATABASES có thể được thay thế bằng SCHema hoặc SCHEMAS bất cứ nơi nào nó xuất hiện. Ví dụ:

  • TẠO cơ sở dữ liệu <=> TẠO SCHema
  • HIỂN THỊ CƠ SỞ <=> HIỂN THỊ SCHEMAS

Tài liệu về MySQL

Các điều khoản của SCHema & DATABASE là một cái gì đó phụ thuộc DBMS.

Một bảng là một tập hợp của các yếu tố dữ liệu (giá trị) được tổ chức sử dụng một mô hình cột dọc (được xác định bởi tên của họ) và hàng ngang. Một cơ sở dữ liệu chứa một hoặc nhiều (thường) Bảng . Và bạn lưu trữ dữ liệu của bạn trong các bảng này. Các bảng có thể liên quan với nhau ( Xem tại đây ).


câu trả lời có giá trị
sofs1

2

Thêm về lược đồ:

Trong SQL 2005, lược đồ là một cách để nhóm các đối tượng. Nó là một container bạn có thể đặt các đối tượng vào. Mọi người có thể sở hữu đối tượng này. Bạn có thể cấp quyền trên lược đồ.

Năm 2000, một lược đồ tương đương với người dùng. Bây giờ nó đã phá vỡ miễn phí và khá hữu ích. Bạn có thể ném tất cả các procs người dùng của mình vào một lược đồ nhất định và các procs quản trị của bạn trong một lược đồ khác. Cấp EXECUTE cho người dùng / vai trò phù hợp và bạn thông qua việc cấp EXECUTE cho các quy trình cụ thể. Đẹp.

Ký hiệu dấu chấm sẽ như thế này:

Máy chủ.Database.Schema.Object

hoặc là

myserver01.Aventureworks.Accounting.Beans


2

A Schemalà một tập hợp các đối tượng cơ sở dữ liệu bao gồm các cấu trúc logic. Nó có tên của người dùng sở hữu nó. A databasecó thể có bất kỳ số lượng Schema's. Một bảng từ cơ sở dữ liệu có thể xuất hiện trong hai lược đồ khác nhau có cùng tên. Một người dùng có thể xem bất kỳ lược đồ nào mà họ đã được gán đặc quyền chọn.


2

Như MusiGenesis đưa ra rất độc đáo, trong hầu hết các cơ sở dữ liệu:

lược đồ: cơ sở dữ liệu: bảng :: sơ đồ tầng: nhà: phòng

Nhưng, trong Oracle có thể dễ dàng hơn để nghĩ về:

lược đồ: cơ sở dữ liệu: bảng :: chủ sở hữu: nhà: phòng


2

Trái với một số câu trả lời ở trên, đây là cách hiểu của tôi dựa trên kinh nghiệm với từng câu trả lời:

  • MySQL: database/schema :: table
  • Máy chủ SQL: database :: (schema/namespace ::) table
  • Oracle: database/schema/user :: (tablespace ::) table

Vui lòng sửa cho tôi biết liệu không gian bảng có tùy chọn hay không với Oracle, đã lâu rồi tôi mới nhớ sử dụng chúng.


1

Trong oracle Schema là một người dùng trong một cơ sở dữ liệu, ví dụ scott là một lược đồ trong cơ sở dữ liệu orcl. Trong một cơ sở dữ liệu, chúng ta có thể có nhiều lược đồ như scott


1

Một cơ sở dữ liệu chứa một hoặc nhiều lược đồ được đặt tên, lần lượt chứa các bảng. Các lược đồ cũng chứa các loại đối tượng được đặt tên khác, bao gồm các kiểu dữ liệu, hàm và toán tử. Tên đối tượng giống nhau có thể được sử dụng trong các lược đồ khác nhau mà không có xung đột; ví dụ, cả giản đồ1 và myschema đều có thể chứa các bảng có tên mytable. Không giống như cơ sở dữ liệu, các lược đồ không được phân tách cứng nhắc: người dùng có thể truy cập các đối tượng trong bất kỳ lược đồ nào trong cơ sở dữ liệu mà anh ta được kết nối, nếu anh ta có đặc quyền để làm như vậy.

Có một số lý do tại sao người ta có thể muốn sử dụng lược đồ:

Để cho phép nhiều người dùng sử dụng một cơ sở dữ liệu mà không can thiệp lẫn nhau.

Để tổ chức các đối tượng cơ sở dữ liệu thành các nhóm logic để làm cho chúng dễ quản lý hơn.

Các ứng dụng của bên thứ ba có thể được đưa vào các lược đồ riêng để chúng không va chạm với tên của các đối tượng khác.

Các lược đồ tương tự như các thư mục ở cấp hệ điều hành, ngoại trừ các lược đồ không thể được lồng nhau.

Tài liệu chính thức có thể được giới thiệu https://www.postgresql.org/docs/9.1/ddl-schemas.html


0

Các lược đồ chứa cơ sở dữ liệu.

Cơ sở dữ liệu là một phần của Schema.

Vì vậy, lược đồ> cơ sở dữ liệu.

Các lược đồ chứa các khung nhìn, các thủ tục được lưu trữ, các cơ sở dữ liệu, các trình kích hoạt, v.v.


0

Một lược đồ không phải là một kế hoạch cho toàn bộ cơ sở dữ liệu. Nó là một gói / thùng chứa cho một tập hợp con các đối tượng (ex.tables) bên trong cơ sở dữ liệu aa.

Điều này nói lên rằng bạn có thể có nhiều đối tượng (ví dụ: bảng) trong một cơ sở dữ liệu không nhất thiết thuộc cùng loại chức năng. Vì vậy, bạn có thể nhóm chúng theo các lược đồ khác nhau và cung cấp cho chúng quyền truy cập người dùng khác nhau.

Điều đó nói rằng, tôi không chắc liệu bạn có thể có một bảng dưới nhiều lược đồ hay không. UI Studio quản lý đưa ra một danh sách thả xuống để gán một lược đồ cho một bảng và do đó có thể chỉ chọn một lược đồ. Tôi đoán nếu bạn làm điều đó với TSQL, nó có thể tạo ra 2 (hoặc nhiều) đối tượng khác nhau với các Id đối tượng khác nhau.


0

Lược đồ cơ sở dữ liệu là một cách để nhóm các đối tượng một cách hợp lý như bảng, dạng xem, thủ tục được lưu trữ, v.v ... Hãy nghĩ về một lược đồ như một thùng chứa các đối tượng. Và bảng là tập hợp các hàng và cột. sự kết hợp của tất cả các bảng tạo thành một db.


1
Những câu đầu tiên giống hệt nhau .... stackoverflow.com/a/29042133/2308683
OneCricketeer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.