Ich habe die häufigsten Fehler beim Datenbankdesign gelesen, die Entwickler- Fragen und Antworten zum Stackoverflow gemacht haben. Bei der ersten Antwort gab es einen Satz über exklusiven Bogen:
Ein exklusiver Bogen ist ein häufiger Fehler, bei dem eine Tabelle mit zwei oder mehr Fremdschlüsseln erstellt wird, wobei einer und nur einer von ihnen ungleich Null sein kann. Großer Fehler. Zum einen wird es umso schwieriger, die Datenintegrität aufrechtzuerhalten. Schließlich hindert auch bei referenzieller Integrität nichts zwei oder mehr dieser Fremdschlüssel daran, gesetzt zu werden (ungeachtet komplexer Überprüfungsbeschränkungen).
Ich verstehe wirklich nicht, warum exklusiver Lichtbogen böse ist. Wahrscheinlich habe ich die Grundlagen nicht verstanden. Gibt es eine gute Erklärung für exklusive Bögen?
quelle
alter table mytable add constraint myconstraint check ((col1 is not null and col2 is null and col3 is null) or (col1 is null and col2 is not null and col3 is null) or (col1 is null and col2 is null and col3 is not null))
. Ich mag keine exklusiven Bögen, aber sie können mit einer Prüfbedingung erzwungen werden. Natürlich muss auch die FK-Einschränkung vorhanden sein.Exklusive Bögen sind nichts Böses. Erzwingen Sie einfach die entsprechende Geschäftsregel mithilfe einer Prüfbedingung. Die meisten gängigen Datenbankverwaltungssysteme unterstützen Überprüfungsbeschränkungen (Oracle, SQL Server, PostgreSQL). Wenn Sie ein Datenmodellierungswerkzeug verwenden, besteht eine gute Chance, dass Ihr Werkzeug automatisch den Code generiert, um die Prüfbeschränkung zu implementieren.
quelle
Der exklusive Bogen ist sehr nützlich im konzeptionellen oder logischen Design. Dies bedeutet nicht, dass Sie auf diese Weise implementieren müssen. Im vorherigen Beispiel kann der Designer entscheiden, das Design mit drei Tabellen zu implementieren. Eine für den Parkplatz, eine für den Mitarbeiter und eine für die Wartungswerkstatt.
quelle