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?

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

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.


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


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.