Różnica między bazą danych a schematem

166

Jaka jest różnica między bazą danych a schematem w programie SQL Server? Oba są kontenerami tabel i danych.

Jeśli schemat zostanie usunięty, to czy wszystkie tabele zawarte w tym schemacie również zostaną usunięte automatycznie, czy też zostaną usunięte po usunięciu bazy danych?

sqlchild
źródło

Odpowiedzi:

171

Baza danych jest głównym kontenerem, zawiera dane i pliki dziennika oraz wszystkie zawarte w nich schematy. Zawsze tworzysz kopię zapasową bazy danych, jest to odrębna jednostka.

Schematy są jak foldery w bazie danych i są używane głównie do grupowania obiektów logicznych, co prowadzi do łatwości ustawiania uprawnień według schematu.

EDYCJA dla dodatkowego pytania

drop schema test1

Msg 3729, poziom 16, stan 1, wiersz 1
Nie można usunąć schematu „test1”, ponieważ odwołuje się do niego obiekt „copyme”.

Nie można usunąć schematu, gdy jest używany. Musisz najpierw usunąć wszystkie obiekty ze schematu.

Powiązana lektura:

  1. Do czego służą schematy programu SQL Server?
  2. MSDN: Separacja schematu użytkownika
RichardTheKiwi
źródło
5
w wersjach serwera sql 2005 i nowszych domyślnie wszystko idzie do schematu DBO, jeśli nie podamy nazwy schematu podczas tworzenia obiektów bazy danych?
sqlchild
@sqlchild tak, to prawda. Schemat jest wymagane, każdy przedmiot jest utrzymywany w schemacie, więc domyślnie dbo
RichardTheKiwi
Czy rozważyłbyś replikację tabel w tej samej bazie danych i pogrupowanie ich w schemacie według różnych klientów, zamiast tworzenia osobnej bazy danych dla każdego klienta dobrą praktyką?
Yevgraf Andreyevich Zhivago
Czy logika jest taka sama dla AWS Redshift? Ktoś? Jestem zdezorientowany, jeśli chodzi o AWS.
Aakash Basu
19

Schemat to sposób kategoryzowania obiektów w bazie danych. Może to być przydatne, jeśli kilka aplikacji współużytkuje jedną bazę danych i istnieje pewien wspólny zestaw danych, do których mają dostęp wszystkie aplikacje.

demas
źródło
12

Baza danych jest jak kontener danych ze schematem, a schematy to układ tabel, w których znajdują się typy danych, relacje i takie tam

Saghir A. Khatri
źródło
1
Nie dotyczy to szczególnie SQL Server; Tabele mają schematy w ogólnych bazach danych tak, ale schematy (nie wiadomo z jakiego powodu) w SQL Server są również efektywnymi przestrzeniami nazw, które zawierają tabele (a te tabele również mają schematy w tradycyjnym sensie). Niefortunna nazwa, którą wybrał dla nich Microsoft - namespacejest o wiele bardziej odpowiednia.
SacredSkull
7

Schemat mówi, jakie tabele znajdują się w bazie danych, jakie mają kolumny i jak są ze sobą powiązane. Każda baza danych ma swój własny schemat.

Robert
źródło
ale jeśli nie utworzę jawnie żadnego schematu i utworzę tabele bez wymieniania nazwy schematu, to gdzie są tworzone tabele. domyślnie muszą wchodzić do schematu dbo. prawda?
sqlchild
tak, ale zazwyczaj nie radzisz sobie ze schematem ręcznie, tworzysz tabele albo z jakiegoś narzędzia do zarządzania, albo używając pierwszej funkcji kodu jakiegoś narzędzia ORM
Robert
Używam sql studio zarządzania serwerem i nie wspominając o dowolną nazwę schematu
sqlchild
4

Schemat w SQL Server to obiekt, który koncepcyjnie przechowuje definicje innych obiektów bazy danych, takich jak tabele, widoki, procedury składowane itp.

Hardik Mishra
źródło