title image


Smiley Re: Integrität + SQL-Constraints
Referentielle Integrität -> Constraint mit Foreign-Key und References (Was spielt hier "ON DELETE CASCADE" für eine Rolle??)

Entity-Integrität -> Constraint mit Primary Key

Semantische Integrität -> Constraint mit Check-Optionen



Diese 3 Punkte hast du schon ganz richtig erkannt.

Zu deiner Zusatzfrage über "ON DELETE CASCADE":

Es gibt die beiden Varianten ON DELETE CASCADE und ON DELETE SET NULL.

ON DELETE CASCADE wird genutzt, wenn abhängige Sätze nicht mehr benötigt werden, also die abhängige Entität nicht mehr existieren darf, wenn die übergeordnete Entität gelöscht wird. Dann wird die untergeordnete Entität einfach "mitgelöscht".

ON DELETE SET NULL wird genutzt, wenn die abhängige Entität immer noch existiert, aber die Abhängigkeit aufgehoben wird. Dann wird in der abhängigen Entität der Fremdschlüssel auf NULL gesetzt.

Und dann gibt es natürlich die Variante, bei der gar nichts steht. Dann darf (und kann) der Hauptdatensatz nicht gelöscht werden, solange abhängige Entitäten existieren.



Beispiele:

FOREIGN KEY ohne weitere Angabe:

Tabelle PRODUKT(product_code, farbe, gewicht, kg_preis...) und

Tabelle VERSANDARTIKEL(carton_no, product_code, artikel_anzahl...)

Hier darf aus PRODUKT natürlich kein Datensatz gelöscht werden, zu dem noch Datensätze in VERSANDARTIKEL stehen.

ON DELETE SET NULL:

Tabelle ANGESTELLTE(personID, vorgesetzten_personID, name...)

In diesem simplen Beispiel sei zu jedem Angestellten der (ebenfalls angestellte) Vorgesetzte erfasst. Wenn dieser aus dem Betrieb ausscheidet, dann geht ja nicht die ganze Abteilung, sondern die Mitarbeiter haben dann eben eine Zeitlang keinen (DB: NULL) Vorgesetzten.

ON DELETE CASCADE:

Tabelle KASSETTE(kassette, standort, länge...)

Tabelle FILM(filmID, kassette, aufnahmedatum...)

Hier werden Filme auf Kassetten verwaltet. Ist eine Kassette kaputt oder verloren, brauche ich auch die dazugehörigen Filme nicht mehr in der DB. Also werden die abhängigen Filmdatensätze bei DELETE auf KASSETTE gleich mitgelöscht.



Und was ist mit der Ablauf-Integrität, kann die auch durch Constraints realisiert werden?



Normalerweise nicht. Dazu dient die Transaktionssicherheit. Solange eine Transaktion nicht abgeschlossen ist, können andere Transaktionen die betroffenen Datensätze eben nicht bearbeiten.





diu vive floreque.
Spockus

erreicht am 04.03.2008 09:47:23

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: