Đâ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.
Đâ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.
Câu trả lời:
lược đồ : cơ sở dữ liệu : bảng :: sơ đồ tầng : nhà : phòng
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.
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.
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.
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ụ:
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 ).
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
A Schema
là 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 database
có 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.
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:
database/schema :: table
database :: (schema/namespace ::) table
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.
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
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.
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.
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.