Qual è una chiara definizione di vincolo del database? Perché i vincoli sono importanti per un database? Quali sono i tipi di vincoli?
Qual è una chiara definizione di vincolo del database? Perché i vincoli sono importanti per un database? Quali sono i tipi di vincoli?
Risposte:
I vincoli fanno parte di una definizione dello schema del database.
Un vincolo è solitamente associato a una tabella e viene creato con un'istruzione CREATE CONSTRAINT
o CREATE ASSERTION
SQL.
Definiscono determinate proprietà a cui devono conformarsi i dati in un database. Possono applicarsi a una colonna, un'intera tabella, più di una tabella o un intero schema. Un sistema di database affidabile garantisce che i vincoli siano sempre presenti (tranne possibilmente all'interno di una transazione, per i cosiddetti vincoli differiti).
I tipi comuni di vincoli sono:
Per capire perché abbiamo bisogno di vincoli, devi prima capire il valore dell'integrità dei dati.
L'integrità dei dati si riferisce alla validità dei dati. I tuoi dati sono validi? I tuoi dati rappresentano ciò per cui li hai progettati?
Quali strane domande ti pongo potrebbero pensare, ma purtroppo troppo spesso, i database sono pieni di dati inutili, riferimenti non validi a righe in altre tabelle, che sono scomparsi da tempo ... e valori che non significano nulla per la logica aziendale della tua soluzione.
Tutta questa spazzatura non è solo incline a ridurre le tue prestazioni, ma è anche una bomba a orologeria nella logica dell'applicazione che alla fine recupererà dati che non è progettata per comprendere.
I vincoli sono regole che crei in fase di progettazione che proteggono i tuoi dati dalla corruzione. È essenziale per la sopravvivenza a lungo termine del tuo cuore figlio di una soluzione di database. Senza vincoli, la tua soluzione decadrà definitivamente con il tempo e l'uso intenso.
Devi riconoscere che la progettazione del design del tuo database è solo la nascita della tua soluzione. Qui dopo deve vivere (si spera) a lungo e sopportare tutti i tipi di (strani) comportamenti da parte dei suoi utenti finali (es. Applicazioni client). Ma questa fase di progettazione nello sviluppo è cruciale per il successo di lunga data della tua soluzione! Rispettalo e dedicagli il tempo e l'attenzione che richiede.
Un uomo saggio una volta disse: "I dati devono proteggersi!" . E questo è ciò che fanno i vincoli. Sono regole che mantengono i dati nel database il più validi possibile.
Ci sono molti modi per farlo, ma fondamentalmente si riducono a:
sys.check_constraints
visualizzazione nel database di esempio AdventureWorksCome ho accennato qui, sono necessarie alcune considerazioni approfondite per costruire l'approccio di vincolo migliore e più difensivo per la progettazione del tuo database. Innanzitutto è necessario conoscere le possibilità e i limiti dei diversi tipi di vincoli di cui sopra. Ulteriori letture potrebbero includere:
Vincoli CHIAVE ESTERI - Microsoft
Vincolo di chiave esterna - w3schools
In bocca al lupo! ;)
I vincoli non sono altro che le regole sui dati. Quali dati sono validi e cosa non è valido possono essere definiti utilizzando dei vincoli. Quindi, quell'integrità dei dati può essere mantenuta. Di seguito sono riportati i vincoli ampiamente utilizzati:
NOT NULL
. Qui possiamo specificare quali dati possiamo inserire per quella particolare colonna e cosa non è previsto per quella colonna.I vincoli possono essere utilizzati per applicare proprietà specifiche dei dati. Un semplice esempio consiste nel limitare una colonna int ai valori [0-100000]. Questa introduzione sembra buona.
I vincoli determinano quali valori sono validi per i dati nel database. Ad esempio, puoi imporre che il valore a non sia nullo (un NOT NULL
vincolo) o che esista come vincolo univoco in un'altra tabella (un FOREIGN KEY
vincolo) o che sia unico all'interno di questa tabella (un UNIQUE
vincolo o forse un PRIMARY KEY
vincolo a seconda dei tuoi requisiti ). Vincoli più generali possono essere implementati utilizzando CHECK
vincoli.
La documentazione MSDN per i vincoli di SQL Server 2008 è probabilmente il miglior punto di partenza.
UNIQUE
vincolo (di cui un PRIMARY KEY
vincolo è una variante). Verifica che tutti i valori di un determinato campo siano univoci nella tabella. Questo è il X
vincolo -axis (record)
CHECK
vincolo (di cui un NOT NULL
vincolo è una variante). Verifica che una determinata condizione valga per l'espressione sui campi dello stesso record. Questo è il Y
vincolo -axis (campi)
FOREIGN KEY
vincolo. Verifica che il valore di un campo si trovi tra i valori di un campo in un'altra tabella. Questo è il Z
vincolo -axis (tabelle).
CHECK
vincoli, quindi perché classificarli in modo diverso? cioè " Y
-axis" (qualunque cosa significhi).
FOREIGN KEY
un CHECK
vincolo using ?
SELECT
domanda. Non è possibile utilizzare sottoquery (o qualsiasi altro costrutto che fa riferimento a valori esterni al record corrente) nei CHECK
vincoli in SQL Server
.
Un database è la rappresentazione logica computerizzata di un modello concettuale (o aziendale), costituito da un insieme di regole aziendali informali. Queste regole rappresentano il significato dei dati compreso dall'utente. Poiché i computer comprendono solo rappresentazioni formali, le regole aziendali non possono essere rappresentate direttamente in un database. Devono essere mappati su una rappresentazione formale, un modello logico, che consiste in un insieme di vincoli di integrità. Questi vincoli - lo schema del database - sono la rappresentazione logica nel database delle regole di business e, quindi, sono il significato dei dati compreso dal DBMS. Ne consegue che se il DBMS non è a conoscenza e / o non applica l'intera serie di vincoli che rappresentano le regole aziendali, ha una comprensione incompleta del significato dei dati e, quindi,
Nota: il significato DBMS - "compreso" - vincoli di integrità - non è identico al significato compreso dall'utente - regole aziendali - ma, nonostante la perdita di qualche significato, acquisiamo la capacità di meccanizzare inferenze logiche dai dati.
"Una vecchia classe di errori" di Fabian Pascal
Esistono fondamentalmente 4 tipi di vincoli principali in SQL:
Vincolo di dominio: se uno dei valori di attributo forniti per una nuova tupla non è del dominio di attributo specificato
Vincolo chiave: se il valore di un attributo chiave in una nuova tupla esiste già in un'altra tupla nella relazione
Integrità referenziale: se un valore di chiave esterna in una nuova tupla fa riferimento a un valore di chiave primaria che non esiste nella relazione referenziata
Entity Integrity: se il valore della chiave primaria è nullo in una nuova tupla
i vincoli sono condizioni che possono convalidare condizioni specifiche. I vincoli relativi al database sono integrità del dominio, integrità dell'entità, integrità referenziale, vincoli di integrità definita dall'utente ecc.