Sự khác biệt giữa Schema / Database trong MySQL


290

Có sự khác biệt giữa lược đồ và cơ sở dữ liệu trong MySQL không? Trong SQL Server, cơ sở dữ liệu là một thùng chứa mức cao hơn liên quan đến lược đồ.

Tôi đọc điều đó Create SchemaCreate Databasevề cơ bản là điều tương tự trong MySQL, điều này khiến tôi tin rằng các lược đồ và cơ sở dữ liệu là các từ khác nhau cho cùng một đối tượng.


Trên thực tế tôi sẽ nói schemalà tốt hơn database, vì MySQL là một loại cơ sở dữ liệu, và nó chứa một số database, và đôi khi bạn usea database, khiến nhiều tìm kiếm bỏ lỡ mục tiêu.
theaws.blog

Câu trả lời:


335

Như được định nghĩa trong Thuật ngữ MySQL :

Trong MySQL, về mặt vật lý, một lược đồ đồng nghĩa với cơ sở dữ liệu . Bạn có thể thay thế từ khóa SCHEMAthay vì DATABASEtrong cú pháp SQL của MySQL, ví dụ như sử dụng CREATE SCHEMAthay vì CREATE DATABASE.

Một số sản phẩm cơ sở dữ liệu khác vẽ một sự khác biệt. Ví dụ, trong sản phẩm Cơ sở dữ liệu Oracle, một lược đồ chỉ đại diện cho một phần của cơ sở dữ liệu: các bảng và các đối tượng khác thuộc sở hữu của một người dùng.


74
Tôi nghĩ rằng "một số sản phẩm cơ sở dữ liệu khác" thực sự là một uyển ngữ cho hầu hết các cơ sở dữ liệu khác (có lẽ ngoại trừ SQLite, nhưng điều đó có thể hiểu được).
Stefan Steiger

5
Tạo lược đồ đồng nghĩa với cơ sở dữ liệu rất thú vị - Tôi đã luôn liên kết nó với các đối tượng người dùng .. Và một đề cập thân thiện về SQLServer, tách biệt khái niệm người dùng / lược đồ cho phép tạo ra một khối lượng linh hoạt và một số cách thú vị để thực hiện các truy vấn động.
Gerard ONeill 4/2/2015

Điều khó chịu khi định nghĩa "lược đồ" là một nhóm các đối tượng cơ sở dữ liệu là nó làm quá tải nghĩa cũ của từ này, ví dụ en.wikipedia.org/wiki/Database_schema .
Đánh dấu E. Haase

1
@mehaase cả hai đều là nghĩa cũ của từ này. Oracle đã có các lược đồ trước cả SQL3 (1999), mặc dù nó đã xử lý chúng như các cơ sở dữ liệu khác sẽ tạo ra các cơ sở dữ liệu đầy đủ. Trong thực tế, Oracle gọi "cơ sở dữ liệu" cái mà người khác gọi là máy chủ hoặc máy chủ - các tệp nhị phân khác nhau, các tệp thực thi khác nhau, các cổng khác nhau.
Panagiotis Kanavos

61

Phụ thuộc vào máy chủ cơ sở dữ liệu. MySQLKhông quan tâm, về cơ bản là điều tương tự.

Oracle, DB2, Và các giải pháp cơ sở dữ liệu cấp độ doanh nghiệp khác thực hiện một sự phân biệt. Thông thường một lược đồ là một tập hợp các bảngCơ sở dữ liệu là một tập hợp các lược đồ.


6
Ngay cả Microsoft SQL Server cũng có sự phân biệt rất giống OracleDB2trong trường hợp này.
RBT

2
Trong MySQL "cơ sở dữ liệu" và "lược đồ" về cơ bản không giống nhau; nó hoàn toàn giống nhau (ví dụ, create databasecreate schemalà từ đồng nghĩa). Trong lược đồ Oracle đồng nghĩa với người dùng (có lẽ chính xác hơn, lược đồ là danh sách tất cả các đối tượng được tạo dưới một người dùng). MSSQL phân biệt cả ba (và kết quả là, khi truy cập một bảng từ một cơ sở dữ liệu khác, tên phải đủ tiêu chuẩn của cả cơ sở dữ liệu và lược đồ, ví dụ database1.dbo.table2)
Mike Rosoft

17

Đề cập đến tài liệu MySql ,

CREATE DATABASE tạo ra một cơ sở dữ liệu với tên đã cho. Để sử dụng câu lệnh này, bạn cần có đặc quyền CREATE cho cơ sở dữ liệu. CREATE SCHema là một từ đồng nghĩa với CREATE DATABASE kể từ MySQL 5.0.2.


7

PostgreSQL hỗ trợ các lược đồ, là một tập hợp con của cơ sở dữ liệu: https://www.postgresql.org/docs/civerse/static/ddl-schemas.html

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à chúng được kết nối, nếu chúng có đặc quyền để làm như vậy.

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.

Theo ý kiến ​​khiêm tốn của tôi, MySQL không phải là một cơ sở dữ liệu tham khảo. Bạn không bao giờ nên trích dẫn MySQL để giải thích. MySQL triển khai SQL không chuẩn và đôi khi yêu cầu các tính năng mà nó không hỗ trợ. Ví dụ: trong MySQL, lược đồ CREATE sẽ chỉ tạo ra một dữ liệu. Đó là người dùng thực sự gây hiểu lầm.

Loại từ vựng này được các DBA gọi là "MySQLism".


2
Và sau đó là "schemata" để thêm sự nhầm lẫn cho người mới bắt đầu :)
Zeni

@Zeni chính xác một schemata trong MySQL là gì? Tất cả những gì tôi có thể tìm thấy là các tham chiếu đến bảng information_schema schemata nhưng không có định nghĩa ngắn gọn về ý nghĩa thực sự của nó
Alf47

@ Alf47 "schemata" chỉ là dạng số nhiều của từ "lược đồ". "lược đồ" cũng được chấp nhận, nhưng không được ưa thích :)
jobo3208

6

trong lược đồ MySQL là từ đồng nghĩa của cơ sở dữ liệu . Nó khá khó hiểu cho những người mới bắt đầu nhảy vào MySQL và ngay ngày đầu tiên tìm thấy lược đồ từ, vì vậy mọi người không có gì phải lo lắng vì cả hai đều giống nhau.

Khi bạn khởi động MySQL lần đầu tiên, bạn cần tạo một cơ sở dữ liệu (giống như bất kỳ hệ thống cơ sở dữ liệu nào khác) để hoạt động để bạn có thể TẠO SCHema , không gì khác ngoài TẠO RA

Trong một số lược đồ hệ thống cơ sở dữ liệu khác biểu thị một phần của cơ sở dữ liệu hoặc một tập hợp các Bảng và bộ sưu tập lược đồ là một cơ sở dữ liệu.


3

Có, mọi người sử dụng các thuật ngữ này thay thế cho nhau liên quan đến MySQL. Mặc dù đôi khi bạn sẽ nghe thấy những người không thích hợp gọi toàn bộ máy chủ cơ sở dữ liệu là cơ sở dữ liệu.


0

Chẳng hạn, Microsoft SQL Server, Các lược đồ đề cập đến một người dùng và là một cấp độ khác của vùng chứa theo thứ tự chỉ ra máy chủ, cơ sở dữ liệu, lược đồ, bảng và đối tượng.

Ví dụ: khi bạn có ý định cập nhật dbo.table_a và cú pháp không đủ điều kiện, chẳng hạn như bảng CẬP NHẬT. Một DBMS không thể quyết định sử dụng bảng dự định. Về cơ bản, mặc định DBMS sẽ sử dụng myuser.table_a


Schema's được sở hữu bởi một người dùng duy nhất. Theo mặc định, người dùng được tạo trong cơ sở dữ liệu sử dụng lược đồ dbo làm lược đồ mặc định của họ. Lược đồ mặc định được sử dụng cho tham chiếu bảng không đủ điều kiện là những gì được đặt cho người dùng đó.
Gerard ONeill 4/2/2015

Trong các phiên bản cũ hơn của SQL Server, việc xóa người dùng sẽ khiến lược đồ được liên kết với nó không sử dụng được. Ngày nay, việc ánh xạ giữa người dùng và lược đồ ít nghiêm ngặt hơn. Ngoài ra, nó được coi là cách thực hành tốt nhất để tạo một tài khoản giả cho chủ sở hữu cơ sở dữ liệu và tất cả các lược đồ.
Jonathan Allen
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.