Jaka jest różnica między schematem a tabelą a bazą danych?

155

To jest prawdopodobnie pytanie podobne do n00bl (lub gorsze). Ale zawsze postrzegałem schemat jako definicję tabeli w bazie danych. To jest złe lub nie do końca poprawne. Niewiele pamiętam z kursów dotyczących baz danych.

anbanm
źródło
3
W schemacie Oracle odnosi się tylko do użytkownika. To wtedy, gdy tworzymy użytkownika, schemat zostanie utworzony, teraz możemy dodawać tabele, widoki, indeksy, pakiety itp. Jako
Ali786

Odpowiedzi:

242

schemat : baza danych : tabela :: plan piętra : dom : pokój

MusiGenesis
źródło
81
Trochę zagadkowe, ale niezłe; ale czy naprawdę myślisz, że samozwańczy n00b by to zrozumiał?
Stein G. Strindhaug
6
Dobra analogia. Zmieniłbym „plan piętra” na „niebieskie wydruki”, ponieważ schemat ma więcej niż tylko tabele, a niebieskie wydruki zawierają okablowanie, ogrzewanie i hydraulikę.
Paul Tomblin
4
„Schemat” tak naprawdę oznacza po prostu „plan”. Widziałem, że odnosiło się to do całej bazy danych lub tylko jednej tabeli lub widoku.
MusiGenesis,
@Paul: dobre punkty. Pierwotnie napisałem „plany”, ale zmieniłem je, ponieważ tak naprawdę nie kojarzy się z „domem” (przynajmniej nie dla mnie).
MusiGenesis,
4
Tak, mam tendencję do postrzegania schematu jako użytkownika w Oracle. Więc definicje różnią się nawet od db do db: D Jak denerwujące.
Robert
123

Schematu relacja jest logiczną definicję tabeli - określa jaka nazwa tabeli jest i jaka jest nazwa i typ każdej kolumny jest. To jak plan lub plan. Schematu bazy danych to zbiór schematów relacji do całej bazy danych.

Stół jest konstrukcja z wieloma rzędami (znany jako „krotki”), z których każdy posiada cechy zdefiniowane w schemacie. Tabele mogą również zawierać indeksy, które ułatwiają wyszukiwanie wartości w określonych kolumnach.

Baza jest formalnie każdy zbiór danych. W tym kontekście baza danych byłaby zbiorem tabel. DBMS (Database Management System) to oprogramowanie (jak MySQL, SQL Server, Oracle, etc), który zarządza i prowadzi bazę danych.

Ian Varley
źródło
1
Schemat bazy danych zawiera również indeksy, widoki itp.
Paul Tomblin,
1
z pewnością nie jest to poprawne. baza danych nie jest zbiorem tabel jako takich. Na przykład możesz mieć 30 baz danych bez jednej tabeli.
Robert
@Robert - jaki byłby sens posiadania bazy danych bez żadnych tabel?
Paul Tomblin,
16
Nawet jeśli nie masz żadnych tabel, nadal jest to zbiór tabel - jest to pusty zbiór tabel.
Jon Skeet
1
@Ian: nie zapominaj, że baza danych będzie również miała ograniczenia - ograniczenia referencyjne (klucze podstawowe, klucze obce), ograniczenia unikalności i ograniczenia sprawdzające. Może również obejmować wyzwalacze i procedury.
Jonathan Leffler
16

W skrócie, schemat jest definicją całej bazy danych, a więc zawiera tabele, widoki, procedury składowane, indeksy, klucze podstawowe i obce itp.

Graeme Perrow
źródło
12

Wykazano, że ten konkretny wpis dotyczy tylko Oracle, a definicja schematu zmienia się w kontekście innej bazy danych.

Prawdopodobnie coś w rodzaju wyszukania w wyszukiwarce, ale terminy FYI wydają się różnić w swoich definicjach, co jest najbardziej irytujące :)

W Oracle baza danych to baza danych. W głowie myśl o tym jako o plikach danych i dziennikach ponownego wykonania oraz rzeczywistej fizycznej obecności na dysku samej bazy danych (tj. Nie instancji)

Schemat jest w rzeczywistości użytkownikiem. Dokładniej jest to zestaw tabel / procs / indexes itp. Należących do użytkownika. Inny użytkownik ma inny schemat (tabele, które jest jego właścicielem), ale użytkownik może również zobaczyć wszystkie schematy, do których ma wybrane uprawnienia. Zatem baza danych może składać się z setek schematów, a każdy schemat z setek tabel. Możesz mieć tabele o tej samej nazwie w różnych schematach, które znajdują się w tej samej bazie danych.

Tabela to tabela, zestaw wierszy i kolumn zawierających dane i jest zawarta w schematach.

Na przykład definicje mogą się różnić w SQL Server. Nie jestem tego świadomy.

Robert
źródło
11

Schemat zachowuje się jak obiekt nadrzędny, jak widać w świecie OOP. więc to nie jest sama baza danych. może ten link się przyda.

Ale w MySQL te dwa są równoważne. Słowo kluczowe DATABASE lub DATABASES można zastąpić słowem SCHEMA lub SCHEMAS, gdziekolwiek się pojawi. Przykłady:

  • UTWÓRZ BAZĘ DANYCH <=> UTWÓRZ SCHEMAT
  • POKAŻ BAZY DANYCH <=> POKAŻ SCHEMATY

Dokumentacja MySQL

Terminy SCHEMAT & DATABASE są czymś zależnym od DBMS.

Tabela to zbiór elementów danych (wartości), które są zorganizowane w oparciu o model pionowych kolumn (które są określone przez ich nazwy) i poziomych rzędach. Baza danych zawiera jedną lub więcej (zwykle) tabel . Dane są przechowywane w tych tabelach. Tabele mogą być ze sobą powiązane ( patrz tutaj ).

earthdan
źródło
wartościowa odpowiedź
sofs1
2

Więcej o schematach:

W SQL 2005 schemat jest sposobem grupowania obiektów. Jest to pojemnik, do którego możesz wkładać przedmioty. Ludzie mogą posiadać ten obiekt. Możesz przyznać prawa do schematu.

W 2000 r. Schemat był odpowiednikiem użytkownika. Teraz się uwolnił i jest całkiem przydatny. Możesz wrzucić wszystkie procesy użytkownika w jednym schemacie, a procesy administratora w innym. Przyznaj EXECUTE odpowiedniemu użytkownikowi / roli, a skończysz przyznawanie EXECUTE na określone procedury. Miły.

Notacja kropkowa wyglądałaby następująco:

Server.Database.Schema.Object

lub

myserver01.Adventureworks.Accounting.Beans

Sam
źródło
2

A Schemato zbiór obiektów bazy danych, który zawiera również struktury logiczne. Zawiera nazwę użytkownika, który jest jej właścicielem. ZAdatabaseMoże mieć dowolną liczbę Schema jest. Jedna tabela z bazy danych może występować w dwóch różnych schematach o tej samej nazwie. Użytkownik może wyświetlić dowolny schemat, do którego został przypisany, wybrać uprawnienie.

Iswarya
źródło
2

Jak ładnie ujął MusiGenesis, w większości baz danych:

schemat: baza danych: tabela :: plan piętra: dom: pokój

Ale w Oracle może być łatwiej pomyśleć o:

schemat: baza danych: tabela :: właściciel: dom: pokój

cmrust
źródło
2

W przeciwieństwie do niektórych z powyższych odpowiedzi, oto moje rozumienie oparte na doświadczeniu z każdą z nich:

  • MySQL: database/schema :: table
  • SQL Server: database :: (schema/namespace ::) table
  • Wyrocznia: database/schema/user :: (tablespace ::) table

Proszę poprawić mnie, czy obszary tabel są opcjonalne, czy nie w Oracle. Minęło dużo czasu, odkąd ich używałem.

Sridhar Sarnobat
źródło
1

W schemacie Oracle jest jeden użytkownik w jednej bazie danych, na przykład scott to jeden schemat w bazie danych orcl. W jednej bazie danych możemy mieć wiele schematów, takich jak scott

prasadj
źródło
1

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 schema1, jak i myschema mogą zawierać tabele o nazwie mytable. W przeciwieństwie do baz danych schematy nie są sztywno oddzielone: ​​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.

Istnieje kilka powodów, dla których warto używać schematów:

Umożliwienie wielu użytkownikom korzystania z jednej bazy danych bez wzajemnej ingerencji.

Organizowanie obiektów bazy danych w logiczne grupy w celu ułatwienia zarządzania nimi.

Aplikacje innych firm można umieszczać w oddzielnych schematach, aby nie kolidowały z nazwami innych obiektów.

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

Oficjalną dokumentację można znaleźć pod adresem https://www.postgresql.org/docs/9.1/ddl-schemas.html

Siddharth Kumar
źródło
0

Schematy zawierają bazy danych.

Bazy danych są częścią schematu.

A więc schematy> bazy danych.

Schematy zawierają widoki, procedury składowane, bazy danych, wyzwalacze itp.

Rafael Lopes
źródło
0

Schemat nie jest planem dla całej bazy danych. Jest to plan / kontener dla podzbioru obiektów (np. Tabel) w bazie danych.

Oznacza to, że możesz mieć wiele obiektów (np. Tabel) w jednej bazie danych, które niekoniecznie należą do tej samej kategorii funkcjonalnej. Możesz więc pogrupować je w różne schematy i nadać im różne uprawnienia dostępu użytkowników.

To powiedziawszy, nie jestem pewien, czy możesz mieć jedną tabelę w wielu schematach. Interfejs użytkownika Management Studio udostępnia listę rozwijaną umożliwiającą przypisanie schematu do tabeli, umożliwiając tym samym wybranie tylko jednego schematu. Myślę, że jeśli zrobisz to z TSQL, może utworzyć 2 (lub wiele) różnych obiektów z różnymi identyfikatorami obiektów.

Gadam
źródło
0

Schemat bazy danych to sposób na logiczne grupowanie obiektów, takich jak tabele, widoki, procedury składowane itp. Pomyśl o schemacie jako o kontenerze obiektów. A tabele to zbiory wierszy i kolumn. połączenie wszystkich tabel tworzy bazę danych.

żyrandol vivek
źródło
1
Te pierwsze zdania są dokładnie takie same ... stackoverflow.com/a/29042133/2308683
OneCricketeer