Differenza tra database e schema


166

Qual è la differenza tra un database e uno schema in SQL Server? Entrambi sono i contenitori di tabelle e dati.

Se uno schema viene eliminato, anche tutte le tabelle contenute in quello schema vengono eliminate automaticamente o vengono eliminate al momento dell'eliminazione del database?

Risposte:


171

Un database è il contenitore principale, contiene i file di dati e di registro e tutti gli schemi al suo interno. Esegui sempre il backup di un database, è un'unità discreta a sé stante.

Gli schemi sono come cartelle all'interno di un database e vengono principalmente utilizzati per raggruppare oggetti logici, il che consente di impostare facilmente le autorizzazioni in base allo schema.

MODIFICA per ulteriore domanda

drop schema test1

Messaggio 3729, livello 16, stato 1, riga 1
Impossibile eliminare lo schema "test1" perché viene fatto riferimento dall'oggetto "copyme".

Non è possibile eliminare uno schema quando è in uso. Devi prima rimuovere tutti gli oggetti dallo schema.

Lettura correlata:

  1. A cosa servono gli schemi di SQL Server?
  2. MSDN: separazione schema utente

5
in SQL Server 2005 e versioni successive, per impostazione predefinita tutto va nello schema DBO se non menzioniamo alcun nome di schema durante la creazione di oggetti di database?
sqlchild

@sqlchild sì, è vero. È richiesto uno schema, ogni oggetto è contenuto in uno schema, quindi il valore predefinito è dbo
RichardTheKiwi

Considerereste la replica di tabelle nello stesso database e le raggruppereste nello schema in base a client diversi, invece di creare una banca dati separata per ogni client una buona pratica?
Yevgraf Andreyevich Zhivago,

La logica è la stessa per AWS Redshift? Chiunque? Sono confuso tra i due in termini di AWS.
Aakash Basu,

19

Lo schema è un modo per classificare gli oggetti in un database. Può essere utile se più applicazioni condividono un singolo database e mentre esiste un insieme comune di dati a cui accedono tutte le applicazioni.


12

Il database è come un contenitore di dati con schema, e gli schemi sono il layout delle tabelle lì tipi di dati, relazioni e cose


1
Questo non è corretto per SQL Server in particolare; Le tabelle hanno schemi nei database generali sì, ma gli schemi (per chissà quale motivo) in SQL Server sono anche spazi dei nomi che contengono tabelle (e quelle tabelle hanno anche schemi nel senso tradizionale). Il nome sfortunato che Microsoft ha scelto per loro - namespaceè molto più appropriato.
SacredSkull,

7

Lo schema dice quali tabelle sono nel database, quali colonne hanno e come sono correlate. Ogni database ha il suo schema.


ma se non creo esplicitamente alcuno schema e creo tabelle senza menzionare alcun nome di schema, allora dove vengono create le tabelle. di default devono entrare nello schema dbo. non è vero?
sqlchild

sì, ma di solito non gestisci lo schema manualmente, crei tabelle da alcuni strumenti di gestione o usando la prima funzione di codice di alcuni strumenti ORM
Robert

io uso sql server management studio e non menziono alcun nome di schema
sqlchild

4

Lo schema in SQL Server è un oggetto che contiene concettualmente definizioni per altri oggetti di database come tabelle, viste, stored procedure ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.