Ja, das ist die ganze Idee einer Datenbank, wie zu einer unkontrollierten Datenspeicherstelle entgegen.
Sie sind nicht benutzerdefiniert, sie sind Data Modeller oder Datenbankadministrator oder Datenbankeigentümer (alle spezifischen Begriffe) definiert. Wenn du es den Benutzern oder den Entwicklern überlassen hast, würden sie den kostenlosen Müll oder das Internet lesen und ein Monster implementieren.
Die Idee einer Datenbank, seit über 30 Jahren, ist, dass die gesamte Definition dafür innerhalb der Datenbank ist. Während dieser Zeit gab es viele Standards (von internationalen Standardisierungsgremien, nicht von einzelnen Anbietern oder Anbietern von Software), die schrittweise verschiedene Standards zur Erhöhung der Integrität von Datenbanken identifiziert haben. Die SQL-Anbieter haben sie implementiert (ok, nicht die Freeware-Mob, aber sie bieten keine ISO/IEC/ANSI-SQL; und sie sind betrügerisch in der Verwendung des Standardbegriffs "SQL" in diesen Produkten).
Im Standard-SQL, haben wir die folgende, als Erklärungen (dh nicht Code außerhalb der Datenbank, nicht Trigger.):
referentielle Integrität. Die übergeordnete Zeile, auf die sich das untergeordnete Element bezieht, muss vorhanden sein, bevor die untergeordnete Zeile eingefügt werden kann. Das ist die Definition der Beziehung, also gibt es keine Verdoppelung.
Datenintegrität. Verschiedene Formen:
- Zuerst sicherstellen, dass der richtige Datentyp verwendet wird. Konsequent. Das eliminiert das Einfügen von Zeichenwerten in Ganzzahlspalten. 10-stellige Werte in 4-stelligen Spalten usw.
- REGELN. Diese sorgen dafür, dass alle Regeln für die Spalte (wie Ihr Beispiel) eingehalten werden.
- CHECK Constraints. Diese erlauben, dass Spaltenwerte gegen andere Spalten überprüft werden, bevor Einfügung erlaubt wird. Sie können einfach oder komplex sein.
- (mit Triggern können Sie weitere Einschränkungen implementieren, die die obigen Deklarationen nicht liefern) .
- Transaktionale Integrität. Dies stellt sicher, dass die Integrität zwischen Zeilen in verschiedenen Tabellen beibehalten wird und auf die Daten Verlass ist.
Ich wiederhole, wenn es diese Grundlagen nicht implementiert (auf jeder Spalte), ist es keine Datenbank, es ist nur ein Speicherort, für Daten, die keine Integrität hat.
Sie können dies leicht überprüfen, indem Sie einige Standard-SQL-Handbücher oder den SQL-Standard selbst (beide kostenlos im Internet verfügbar) überprüfen.
Alle Informationen im Gegensatz zu den oben genannten, im Internet gefunden, ist es nicht wert, darauf zu reagieren.
- Jeder Verrücker mit einer Tastatur und einer Verbindung kann heutzutage alles veröffentlichen. Wiki wird von unqualifizierten Amateuren geschrieben, und die "Definitionen" ändern sich jede Woche, da etwas weniger unqualifizierte Amateure sie bearbeiten.
- Die meisten von ihnen schreiben über das, was sie glauben, ohne jede tatsächliche Erfahrung, Prüfung oder Überprüfung ihrer Überzeugungen.
Es ist Zeitverschwendung, mit Standards zu argumentieren; sie haben einen Zweck; sie wurden von Köpfen geschaffen, die größer waren als unsere; und sie sind lange (30 Jahre!) von größeren Organisationen und Regierungen akzeptiert (gefordert) worden. Kleine Organisationen können Zeit sparen, indem sie diese Standards einhalten, anstatt den Glauben zu behalten, dass sie irgendwie "anders" sind. Wir beschäftigen uns in dieser Branche mit physikalischer Wissenschaft und Technologie, nicht mit magischem Denken.
Business Rules in der Application Layer
Nun, wenn Sie die Regeln in dem Server setzen, werden sie vom Server garantiert. Ich würde jeden Tag darauf vertrauen, dass jede Anwendungsschicht fehlerfrei ausgeführt wird, insbesondere eine, die von Leuten geschrieben wurde, die Datenbanken nicht verstehen, oder deren Zweck.
Datenbanken sollen völlig unabhängig von den Anwendungen (beachten Sie den Plural), die sie verwenden. Es wäre albern, diese Regeln in fünf Apps anstatt in einem Ort in der Datenbank zu platzieren. Was passiert, wenn sich die Regeln ändern? Kann jemand garantieren, dass alle Apps korrekt und einheitlich aktualisiert werden?
Denken Sie auch daran, dass es sich bei Daten um Unternehmensdaten und nicht um Abteilungsdaten handelt. Das Unternehmen implementiert Standards, so dass sie vermeiden können, dass die Abteilungsadministratoren Zeit verlieren, wenn sie vor 30 Jahren dumme Argumente außerhalb ihrer Abteilung haben.
Wieder Entsendung Menschen, was sie denken, als ob sie die erste Person durch diesen Denkprozess ohne Abschluss, gehen waren (was sie sind von Standards bewusst bedeuten würde) oder Verständnis oder tatsächliche Erfahrung (was würde ändere ihre Überzeugungen sehr schnell).
Daher: Alle Geschäftsregeln, die sich auf Daten beziehen, in irgendeiner Form oder Form, sollten mit den Daten im IEC/ISO/ANSI-Standardkatalog in der Datenbank platziert werden.
Jede Geschäftslogik (abhängig von App und Nutzung) kann überall dort platziert werden, wo sich das Unternehmen entscheidet. Auf diese Weise wird die Integrität des Unternehmensvermögens erhalten, und der Schaden ist auf die Abteilung begrenzt, die magisches Denken hegt.
danke für diese umfassende antwort :) – Pavel
@Pavel. Gern geschehen! – PerformanceDBA
@PerformanceDBA Sie haben einen sehr beredten Fall gemacht, danke. Würden Sie mir bitte etwas Vertrauenswürdiges empfehlen, abgesehen von den von Ihnen erwähnten Standards, zu diesem Thema zu lesen? –