Різниця між схемою / базою даних в MySQL


290

Чи є різниця між схемою та базою даних у MySQL? У SQL Server база даних є контейнером вищого рівня по відношенню до схеми.

Я читаю це Create Schemaі Create Databaseроблю по суті те ж саме в MySQL, що призводить мене до думки, що схеми та бази даних - це різні слова для одних і тих же об'єктів.


На самом деле я б сказав , schemaкраще database, так як MySQL є свого роду база даних, і вона містить кілька database, а іноді , що робить багато пошуків до мети промахів. usedatabase
theaws.blog

Відповіді:


335

Як визначено у словнику MySQL :

У MySQL фізично схема є синонімом бази даних . Ви можете замінити ключове слово SCHEMAзамість DATABASEсинтаксису MySQL SQL, наприклад, використовуючи CREATE SCHEMAзамість CREATE DATABASE.

Деякі інші продукти бази даних відрізняють. Наприклад, у продукті бази даних Oracle схема представляє лише частину бази даних: таблиці та інші об'єкти, що належать одному користувачеві.


74
Я думаю, що "деякі інші продукти баз даних" - це справді евфемізм для майже всіх інших баз даних (можливо, крім SQLite, але це зрозуміло).
Стефан Штайгер

5
Зробити схему синонімом бази даних цікавою - я завжди пов'язував її з об’єктами користувача. І дружня згадка про SQLServer, яка розділяла концепцію користувача / схеми, що забезпечує гнучкість завантаження і деякі цікаві способи робити динамічні запити.
Джерард ONeill

Прикрою справою визначення "схеми" як групування об'єктів бази даних є те, що вона перевантажує старіше значення цього слова, наприклад, en.wikipedia.org/wiki/Database_schema .
Марк Е. Хаазе

1
@mehaase обидва - це старе значення цього слова. У Oracle були схеми ще до SQL3 (1999), хоча він ставився до них, оскільки інші бази даних будуть ступати повномасштабні бази даних. Насправді Oracle називає «базу даних» те, що інші називають сервером або серверним екземпляром - різні бінарні файли, різні виконувані файли, різні порти.
Панайотис Канавос

61

Залежить від сервера баз даних. MySQLбайдуже, це в основному те саме.

Oracle, DB2та інші рішення на базі даних на рівні підприємства відрізняють особливості. Зазвичай схема - це сукупність таблиць, а База даних - це сукупність схем.


6
Навіть Microsoft SQL Server має дуже схоже розрізнення як Oracleі DB2в цьому випадку.
RBT

2
У MySQL "база даних" і "схема" - це в основному не одне і те ж; це саме те саме (наприклад, create databaseі create schemaє синонімами). У Oracle схема є синонімом користувача (можливо, точніше, схема - це список усіх об'єктів, створених під користувачем). MSSQL розрізняє всі три (і як результат, при доступі до таблиці з іншої бази даних, ім'я має кваліфікуватися як базами даних, так і схемами, наприклад database1.dbo.table2)
Майк Рософт,

17

Посилаючись на документацію MySql ,

CREATE DATABASE створює базу даних із заданим іменем. Щоб використовувати цей вислів, вам потрібна привілей CREATE для бази даних. CREATE SCHEMA - синонім CREATE DATABASE від MySQL 5.0.2.


7

PostgreSQL підтримує схеми, що є підмножиною бази даних: https://www.postgresql.org/docs/current/static/ddl-schemas.html

База даних містить одну або декілька названих схем, які, в свою чергу, містять таблиці. Схеми також містять інші види іменованих об'єктів, включаючи типи даних, функції та оператори. Те саме ім'я об'єкта може використовуватися в різних схемах без конфлікту; наприклад, і schema1, і myschema можуть містити таблиці, названі mytable. На відміну від баз даних, схеми не є жорстко розділеними: користувач може отримати доступ до об'єктів у будь-якій із схем бази даних, до якої вони підключені, якщо у них є права на це.

Схеми є аналогами каталогів на рівні операційної системи, за винятком того, що схеми не можна вкладати.

На мою скромну думку, MySQL не є довідковою базою даних. Ніколи не слід цитувати MySQL для пояснення. MySQL реалізує нестандартний SQL і іноді вимагає функції, які він не підтримує. Наприклад, у MySQL схема CREATE створюватиме лише DATABASE. Це справді вводить користувачів в оману.

Цей тип лексики DBA називається "MySQLism".


2
І тоді є "схеми", щоб додати плутанину для початківців :)
Зені

@Zeni що саме є схемами в MySQL? Все, що я міг знайти, - це посилання на таблицю схем information_schema, але немає чіткого визначення того, що це насправді означає
Alf47

@ Alf47 "схеми" - це просто множинна форма слова "схема". "схеми" теж прийнятні, але не такі фантазійні :)
jobo3208

6

в MySQL схема є синонімом бази даних . Це досить заплутано для початківців, які переходять до MySQL і вже в перший день знаходять схему слів , тож хлопцям нічого не турбуватися, оскільки обоє однакові.

Коли ви вперше запускаєте MySQL, вам потрібно створити базу даних (як і будь-яку іншу систему баз даних), з якою ви зможете створити СХЕМУ, що є не що інше, як СТВОРИТИ ДАТАБАЗУ

В деяких інших системах бази даних схема являє собою частину бази даних або колекцію Таблиць, а колекція схеми - це база даних.


3

Так, люди використовують ці терміни взаємозамінно стосовно MySQL. Хоча часто ви чуєте, як люди недоцільно називають весь сервер бази даних як базу даних.


0

Наприклад, Microsoft SQL Server, схеми посилаються на одного користувача і є іншим рівнем контейнера в порядку вказівки сервера, бази даних, схеми, таблиці та об'єкти.

Наприклад, коли ви збираєтесь оновити dbo.table_a і синтаксис не є повноцінним, наприклад, таблиця UPDATE.a СУБД не може вирішити використовувати призначену таблицю. По суті, СУБД буде використовувати myuser.table_a


Схеми належать одному користувачеві. За замовчуванням користувач, створений у базі даних, використовує схему dbo як свою схему за замовчуванням. Схема за замовчуванням, що використовується для не повністю кваліфікованої посилання на таблицю, - це те, що встановлено для цього користувача.
Джерард ONeill

У старих версіях SQL Server видалення користувача зробить схему, пов'язану з ним, непридатною. У наші дні відображення між користувачем та схемою менш суворе. Також найкращою практикою вважається створення єдиного підробленого облікового запису для власника бази даних та всіх схем.
Джонатан Аллен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.