Różnica między schematem / bazą danych w MySQL

290

Czy istnieje różnica między schematem a bazą danych w MySQL? W SQL Server baza danych jest kontenerem wyższego poziomu w stosunku do schematu.

Przeczytałem to Create Schemai Create Databaserobię w zasadzie to samo w MySQL, co prowadzi mnie do przekonania, że ​​schematy i bazy danych to różne słowa dla tych samych obiektów.

Lloyd Banks
źródło
Właściwie powiedziałbym schemajest lepszy niż database, jak MySQL jest rodzajem bazy danych i zawiera kilka database, a czasem , który sprawia, że wielu wyszukiwań na celu pominięcia. usedatabase
theaws.blog

Odpowiedzi:

335

Jak zdefiniowano w glosariuszu MySQL :

W MySQL fizycznie schemat jest synonimem bazy danych . Możesz zastąpić słowo kluczowe SCHEMAzamiast DATABASEw składni MySQL SQL, na przykład używając CREATE SCHEMAzamiast CREATE DATABASE.

Niektóre inne produkty baz danych wyróżniają się. Na przykład w produkcie Oracle Database schemat reprezentuje tylko część bazy danych: tabele i inne obiekty będące własnością jednego użytkownika.

Eggyal
źródło
74
Myślę, że „niektóre inne produkty bazodanowe” są naprawdę eufemizmem dla niemal każdej innej bazy danych (być może oprócz SQLite, ale to zrozumiałe).
Stefan Steiger,
5
Interesujące jest uczynienie schematu synonimicznym z bazą danych - zawsze kojarzyłem go z obiektami użytkownika. I przyjazna wzmianka o SQLServer, który oddzielił koncepcję użytkownik / schemat, pozwalając na dużą elastyczność i kilka interesujących sposobów wykonywania dynamicznych zapytań.
Gerard ONeill
Irytujące w definiowaniu „schematu” jako grupy obiektów bazy danych jest to, że przeciąża ono starsze znaczenie tego słowa, np . En.wikipedia.org/wiki/Database_schema .
Mark E. Haase
1
@mehaase oba są starym znaczeniem tego słowa. Oracle miał schematy jeszcze przed SQL3 (1999), chociaż traktował je tak, jak inne bazy danych przetwarzałyby pełne bazy danych. W rzeczywistości Oracle nazywa „bazę danych”, co inni nazywają serwerem lub instancją serwera - różne pliki binarne, różne pliki wykonywalne, różne porty.
Panagiotis Kanavos
61

Zależy od serwera bazy danych. MySQLnie obchodzi, to w zasadzie to samo.

Oracle, DB2i inne rozwiązania baz danych na poziomie przedsiębiorstwa wyróżniają się. Zwykle schemat to zbiór tabel, a baza danych to zbiór schematów.

użytkownik2631022
źródło
6
Nawet Microsoft SQL Server ma bardzo podobne rozróżnienie jak Oraclei DB2w tym przypadku.
RBT
2
W MySQL „baza danych” i „schemat” nie są w zasadzie tym samym; jest dokładnie to samo (na przykład create databasei create schemasą synonimami). W Oracle schemat jest synonimem użytkownika (być może bardziej dokładnie, schemat jest listą wszystkich obiektów utworzonych w ramach użytkownika). MSSQL rozróżnia wszystkie trzy (w wyniku tego, podczas uzyskiwania dostępu do tabeli z innej bazy danych, nazwa musi być kwalifikowana zarówno przez bazę danych, jak i schemat, np. database1.dbo.table2)
Mike Rosoft
17

Odwołując się do dokumentacji MySql ,

CREATE DATABASE tworzy bazę danych o podanej nazwie. Aby użyć tej instrukcji, potrzebujesz uprawnienia CREATE do bazy danych. CREATE SCHEMA jest synonimem CREATE DATABASE od MySQL 5.0.2.

Akash KC
źródło
7

PostgreSQL obsługuje schematy, które są podzbiorem bazy danych: https://www.postgresql.org/docs/current/static/ddl-schemas.html

Baza danych zawiera jeden lub więcej nazwanych schematów, które z kolei zawierają tabele. Schematy zawierają również inne rodzaje nazwanych obiektów, w tym typy danych, funkcje i operatory. Ta sama nazwa obiektu może być używana w różnych schematach bez konfliktów; na przykład zarówno schemat 1, jak i myschema mogą zawierać tabele o nazwie mytable. W przeciwieństwie do baz danych schematy nie są sztywno rozdzielone: ​​użytkownik może uzyskać dostęp do obiektów w dowolnym schemacie w bazie danych, z którą jest połączony, jeśli ma do tego uprawnienia.

Schematy są analogiczne do katalogów na poziomie systemu operacyjnego, z tym wyjątkiem, że nie można zagnieżdżać schematów.

Moim skromnym zdaniem MySQL nie jest referencyjną bazą danych. Nigdy nie powinieneś cytować MySQL jako wyjaśnienia. MySQL implementuje niestandardowy SQL i czasami twierdzi, że nie obsługuje. Na przykład w MySQL polecenie UTWÓRZ schemat utworzy tylko bazę danych. Naprawdę wprowadzają w błąd użytkowników.

Ten rodzaj słownictwa nazywa się „MySQLism” przez DBAs.

Jean-Michel P.
źródło
2
A potem są „schematy”, które wprowadzą zamieszanie dla początkujących :)
Zeni
@Zeni czym dokładnie jest schemat w MySQL? Jedyne, co mogłem znaleźć, to odniesienia do tabeli schematów_informacji, ale brak zwięzłej definicji tego, co to właściwie oznacza
Alf47,
@ Alf47 „schemat” to po prostu liczba mnoga słowa „schemat”. „schematy” są również dopuszczalne, ale nie tak fantazyjne :)
jobo3208
6

w schemacie MySQL jest synonimem bazy danych . Jest to dość mylące dla początkujących osób, które skaczą do MySQL i już pierwszego dnia znajdują słowo „ schemat” , więc faceci nie muszą się martwić, ponieważ oba są takie same.

Kiedy uruchamiasz MySQL po raz pierwszy, musisz stworzyć bazę danych (jak każdy inny system bazy danych) do pracy, abyś mógł UTWORZYĆ SCHEMAT, który jest niczym innym jak UTWÓRZ BAZĘ DANYCH

W niektórych innych systemach baz danych schemat reprezentuje część bazy danych lub zbiór tabel, a zbiór schematów jest bazą danych.

Riz
źródło
3

Tak, ludzie używają tych terminów zamiennie w odniesieniu do MySQL. Często zdarza się, że ludzie niewłaściwie nazywają cały serwer bazy danych bazą danych.

Mike Brant
źródło
0

Na przykład Microsoft SQL Server, schematy odnoszą się do pojedynczego użytkownika i są kolejnym poziomem kontenera w kolejności wskazania serwera, bazy danych, schematu, tabel i obiektów.

Na przykład, jeśli zamierzasz zaktualizować plik dbo.table_a, a składnia nie jest w pełni kwalifikowana, np. Tabela UPDATE. A DBMS nie może zdecydować się na użycie zamierzonej tabeli. Zasadniczo domyślnie DBMS będzie używał myuser.table_a

EliD
źródło
Schematy są własnością jednego użytkownika. Domyślnie użytkownik utworzony w bazie danych używa schematu dbo jako schematu domyślnego. Domyślny schemat używany do niekompletnego odwołania do tabeli jest ustawiony dla tego użytkownika.
Gerard ONeill,
W starszych wersjach SQL Server usunięcie użytkownika spowodowałoby, że schemat, który był z nim powiązany, nie nadawał się do użytku. Obecnie mapowanie między użytkownikiem a schematem jest mniej surowe. Ponadto za najlepszą praktykę uważa się utworzenie jednego fałszywego konta dla właściciela bazy danych i wszystkich schematów.
Jonathan Allen