1. Die Verwendung von Feldern im Datenbankdesign
Im Design einiger Tabellen gibt es einige häufig verwendete Absätze, die in großen Systemen häufig zum Standard geworden sind Diese Spuren von Feldern, obwohl die Namen der Felder variieren können. Häufig verwendete Felder sind in die folgenden Kategorien unterteilt:
1.WHO-Feld
Dieser Feldtyp wird hauptsächlich zum Aufzeichnen der Vorgangsänderungsinformationen jeder Datensatzzeile verwendet, z. B. wer diese hinzugefügt hat Zeile der Datensätze und wer sie vorgenommen hat, detaillierte Beschreibung ist wie folgt:
|
Typ | Beschreibung | |||||||||||||||
LAST_UPDATE_DATE | DATUM | Datum der letzten Änderung | LAST_UPDATED_BY | NUMBER(15) | Zuletzt geändert von | ||||||||||||
ERSTELLUNGSDATUM | DATUM Erstellungsdatum
| tr>||||||||||||||||
ERSTELLT_VON | NUMMER(15) | Ersteller |
Feldname | Typ | Beschreibung |
STATUS | NUMMER | Status |
START_DATUM | DATUM | Effektives Startdatum |
END_DATUM | DATUM | Gültiges Enddatum |
Ich. Status
Dieses Feld wird im Allgemeinen in numerischer Form ausgedrückt. 0 bedeutet ungültig, 1 bedeutet gültig. Natürlich können diese beiden Werte bei der Verwendung maskiert und als „gültig“ und „ungültig“ angezeigt werden. . Hat keinen Einfluss auf die Speichermethoden.
Ungültigmachung bedeutet nicht Löschung. Der abgelaufene Inhalt kann nach der Anpassung durch das Verwaltungsprogramm wiederhergestellt werden und der Status wird gültig.
II. Gültiges Startdatum
Wenn dieses Feld mit einem bestimmten Wert gefüllt ist, sind die Informationen nur gültig, wenn die Zeit diesen Zeitpunkt überschreitet. Vor diesem Datum werden die Informationen automatisch als ungültig behandelt Beachten Sie Folgendes: Wenn dieses Feld leer bleibt, sollte es verarbeitet werden, indem diese Bedingungsprüfung übersprungen wird, wodurch die Programmflexibilität erreicht werden kann.
III. Gültigkeitsenddatum
Die spezifische Bedeutung ist dieselbe wie oben, mit der Ausnahme, dass der Inhalt nach diesem Zeitraum als ungültig behandelt wird.
3. Logisches Löschen
Es gibt im Allgemeinen zwei Methoden zum Löschen in einem Datenbanksystem: physisches Löschen und logisches Löschen. Beim sogenannten physischen Löschen handelt es sich um die direkte Verwendung von Lösch- und anderen Befehlen in der Datenbank, um die Daten tatsächlich aus der Datenbank zu löschen . Diese Art der Löschung kann die Daten nicht über normale Kanäle wiederherstellen, obwohl sie der Überwachungsverfolgung nicht förderlich ist, da die Daten nicht gelöscht werden, sondern die Datensätze Das heißt, die Zuweisung eines Werts zu einem bestimmten Feld zeigt an, dass der Datensatz gelöscht wurde.
Die Verarbeitungslogik des logischen Löschens wird nur von der Anwendung selbst genutzt, da die Daten tatsächlich noch in der Datenbank vorhanden sind.
Die beteiligten Felder sind wie folgt:
|
Typ | Beschreibung | ||||||||||||
GELÖSCHT | ANZAHL | Ob gelöscht werden soll | ||||||||||||
DELETE_DATE | DATUM | Zeitpunkt löschen | ||||||||||||
DELETED_BY | NUMMER | Person löschen |
Ich. Löschkennzeichen
Dieses Feld hat zwei Werte, 0 bedeutet normal, 1 bedeutet gelöscht.
Nach dem Markieren der Löschmarkierung müssen alle Abfrageanweisungen auch die Bedingung gelöscht = 0 in der Beurteilungsbedingung hinzufügen, da sonst schwerwiegende Fehler auftreten.
II. Löschzeit
wird zusammen mit dem Löschkennzeichen verwendet, um die Löschzeit anzugeben. Sie können die aktuelle Serverzeit verwenden und diese mit sysdate füllen.
III. Löschperson
Ähnlich wie bei der letzten Änderungsperson muss der spezifische Löschoperator aufgezeichnet werden
Das Löschen unterscheidet sich vom Flag-Bit. Die Flag-Bit-Methode wird verwendet Die Daten können vom Hintergrundverwaltungspersonal nicht angezeigt werden. Der Status kann auch über das Verwaltungsprogramm angepasst werden, die Löschkennzeichnung ist jedoch unterschiedlich. Nach der Bestätigung des Löschvorgangs sollte der Datensatz als nicht für die gesamte Anwendung vorhanden angesehen werden.
4. Auto-Inkrement-Felder
Die sogenannten Auto-Inkrement-Felder beziehen sich auf Felder, die bei Verwendung automatisch hinzugefügt werden können.
Der Wert dieses Feldes hat im Allgemeinen keine eindeutige Bedeutung und wird nur für eine eindeutige Kennung verwendet. Dieses Feld wird im Allgemeinen als Primärschlüssel festgelegt.
Wenn die Anwendung nur auf Oracle abzielt und keine Datenbankunabhängigkeit berücksichtigt, ist die Reihenfolge die beste Wahl. Für diejenigen, die früher andere Datenbanken wie MSSQL verwendet haben, ist die Verwendung von Oracle einfach zu aufwändig. Die Erstellung eines Auto-Inkrementierungsfelds ist zwar sehr aufwändig, bringt aber auch andere Probleme mit sich Datenbanken können nicht mit den Vorteilen verglichen werden, dass ein Bestellsystem sowohl Bestellköpfe als auch Bestellzeilen hat. Im Allgemeinen werden zuerst die Bestellköpfe und dann die Bestellzeilen eingefügt Spezifische Informationen können erst nach dem Einfügen bekannt gemacht werden. Die Hauptsache ist, dass der Sequenzeffekt sehr hoch ist und kein Grund zur Sorge über Leistungsprobleme besteht.
5. Flexible Felder
Beim Entwerfen der Datenbanktabellenstruktur ist es am besten, ein paar freie Felder beiseite zu legen, da bei der Verwendung des Systems im Allgemeinen die Notwendigkeit besteht, Felder hinzuzufügen. Der Vorteil reservierter Felder besteht darin, dass sie bei Bedarf nicht aktiviert werden können. Das Risiko für die spätere Wartung der Datenbank ist sehr gering. Darüber hinaus führen allgemeine DDL-Vorgänge zum Scheitern der kaskadierten VIEW/PACKAGE-Programme. Reservierte Felder Wenn Sie elastische Felder hinzufügen, tritt dieses Problem nicht auf.
Die reservierten Felder können je nach Typ auch in drei Typen unterteilt werden: Zeichenfolgentyp, numerischer Typ und Datumstyp. Sie können 10 Felder für jeden Typ reservieren oder je nach Bedarf den folgenden Stil verwenden :
NUMBER_ATTRIBUTE1
STRING_ATTRIBUTE1
DATE_ATTRIBUTE1
Wenn das elastische Feld nicht aktiviert ist, nimmt es dann zu viel Speicherplatz ein? Die Antwort lautet: Nein. Denn in der Struktur dieser großen Datenbank nimmt ein Feld nur dann tatsächlich Platz ein, wenn es tatsächlich verwendet wird. Andernfalls handelt es sich lediglich um eine „Beschreibung“ und nimmt keinen tatsächlichen Platz ein, sodass keine Platzverschwendung entsteht.
6. Geteiltes Feld
Dies ist kein Feldtyp, sondern bezieht sich auf eine große Tabelle, die zur Speicherung während des Tabellenentwurfs entsprechend aufgeteilt werden kann. Die Benutzertabelle kann beispielsweise Anmeldenamen, Passwörter usw. enthalten. Name, Geburtstag und eine Reihe von Feldern. In einigen Fällen kann die Anzahl der enthaltenen Mitgliedsattribute Hunderte erreichen.
Wenn die Datenmenge klein ist, treten unabhängig von der Art des Speichers keine Leistungsprobleme auf. Wenn die Datenmenge jedoch relativ groß ist, müssen Leistungsprobleme berücksichtigt werden. Wenn der Index angemessen ist, ist die allgemeine Abfragegeschwindigkeit unabhängig von der Datenmenge nicht zu langsam. Unter bestimmten Umständen, wenn der Index jedoch nicht verwendet werden kann, ist dies der Fall Dann wird eine kleine Tabelle gescannt und die Zeit, die zum Scannen einer großen Tabelle benötigt wird, ist völlig unterschiedlich. Daher wird empfohlen, größere Tabellen separat zu speichern und mehrere häufig verwendete Felder separat zu extrahieren, damit die Effizienz auch dann erhöht werden kann, wenn die gesamte Tabelle gescannt wird besser kontrolliert werden.
Solange die Haupttabelle und die Untertabelle über Indizes verfügen, ist deren Kombination zur Abfrage bei Verwendung im Grunde dasselbe wie bei einer wirklich großen Tabelle, obwohl die Leistung definitiv langsamer ist als bei einer wirklich großen Tabelle , aber im Vergleich zu den Leistungsverbesserungen ist es das wert.
Derzeit übernehmen einige große Systeme diese Aufteilungsmethode
2. Angemessene Verwendung von Ansichten
Ansicht ist eine Darstellung der Basistabelle, sie wird nicht physisch gespeichert. Die Daten werden nur gespeichert Wird bei Bedarf aus der Basistabelle aufgerufen. Es kann als Tool verstanden werden, das eine SQL zur einfachen Verwendung kapselt.
Ansichten haben viele Vorteile:
1. Bequemlichkeit
Wenn eine Abfrage sehr komplex ist, ist es sehr unpraktisch, sie im Programm zu referenzieren. Insbesondere wenn diese SQL in einem Programm wiederholt aufgerufen wird, wird das Programm sehr aufgebläht lässt das gesamte Programm sehr frisch und sauber aussehen.
2. Flexibilität
Wenn eine Tabelle von mehreren Programmen referenziert wird und sich die Struktur der Tabelle ändert, müssen alle Programme entsprechende Anpassungen vornehmen, und der Arbeitsaufwand ist sehr groß Wenn nur auf eine Ansicht verwiesen wird, brauchen wir nur um die Ansicht korrekt zu ändern, und alle Programme werden keine Probleme haben.
3. Sicherheit
Eine Ansicht kann nur eine begrenzte Anzahl von Feldern einer Basistabelle umfassen, sodass Benutzer, die die Ansicht verwenden, bei öffentlichen Berechtigungen andere vertrauliche Felder der Basistabelle anzeigen können.
Ansichten haben viele Vorteile. Es wird empfohlen, Ansichten häufiger in der tatsächlichen Arbeit zu verwenden.
3. PAKET
PACKAGE ist ein Programmpaket. Seine Besonderheit besteht darin, dass es Variablen, Funktionen und gespeicherte Prozeduren in einem Paket enthalten kann und alle öffentlichen Variablen innerhalb des gesamten Pakets gemeinsam genutzt werden können. , das ist der bequemste Ort.
Ein weiteres Merkmal des Pakets besteht darin, dass die externe Schnittstelle einfacher wird. Egal wie kompliziert das Paket im Inneren ist, es muss nur eine begrenzte Schnittstelle zur Außenwelt geöffnet werden.
Diese Eigenschaften des Pakets sind in keinem Dokument zu finden. Ich werde hier nur auf einen Punkt eingehen, nämlich die Ungültigmachung des Pakets Wenn der Status eines Pakets von „ungültig“ auf „gültig“ umgestellt wurde, wird der Status des IIS-Cache-Datensatzes möglicherweise nicht automatisch aktualisiert weiterhin als ungültig verarbeitet, was zu einem Systemfehler führt. Um diese Art von Fehlern zu vermeiden, füge ich dem Paket normalerweise eine öffentliche Funktion mit dem Namen STATUS hinzu. Diese Funktion gibt einfach eine Zahl 1 zurück. Bevor Sie andere Funktionen des Pakets aufrufen, rufen Sie diese Funktion auf, um den aktuellen Status des Pakets zu überprüfen. Wenn 1 korrekt zurückgegeben werden kann, können Sie mit den nachfolgenden Vorgängen fortfahren. Wenn die Rückgabe leer ist, liegt ein Problem mit dem aktuellen Paket vor und es kann eine Interaktion geben, die den Benutzer dazu auffordert, das Problem zu lösen. Wenn Ihre Transaktionsverarbeitung die Koordination mehrerer Pakete erfordert, ist es sehr schmerzhaft, wenn das vorherige Paket erfolgreich verarbeitet wurde, das spätere Paket jedoch nicht erfolgreich verarbeitet werden kann, da dies dazu führen kann, dass die Transaktion unvollständig ist. Daher ist es äußerst wichtig, den Status zu überprüfen Informieren Sie sich vorab über alle Pakete und beseitigen Sie mögliche Gefahren im Vorfeld.
4. Index
Die Rolle des Index ist sehr offensichtlich und kann die Überprüfungsgeschwindigkeit erheblich verbessern, insbesondere bei großen Tabellen. Wenn kein Index vorhanden ist, ist ein vollständiger Tabellenscan erforderlich Dies ist eine sehr zeitaufwändige Aktion, daher müssen entsprechende Indizes erstellt werden, um den Prozess zu beschleunigen.
Manchmal hat der Index jedoch negative Auswirkungen, z. B. eine große Anzahl von Einfügungs- oder Änderungs- und Löschvorgängen, da jede kleine Aktion gleichzeitig auch den Index ändert, was die Effizienz erheblich verringert Daher wird vor einer großen Anzahl von DML-Vorgängen empfohlen, zuerst den Index zu löschen und den Index nach Abschluss des Vorgangs erneut einzurichten, was in Bezug auf die Gesamtzeit viel Zeit sparen kann.
Weitere Artikel zu Oracle-Programmentwicklungstipps finden Sie auf der chinesischen PHP-Website!