Tipps zur Oracle-Programmentwicklung

高洛峰
Freigeben: 2017-02-11 11:14:30
Original
1927 Leute haben es durchsucht

Oracle hat viele Vorteile, aber wenn es unsachgemäß verwendet wird, können seine leistungsstarken Vorteile nicht genutzt werden. Hier ist eine kleine Erfahrung, die ich im Oracle-Entwicklungsprozess gesammelt habe, um sie mit Ihnen zu teilen.

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:

DATUM

tr> I. Ersteller In jedem System gibt es normalerweise einen Berechtigungsüberprüfungs- und Anmeldevorgang. Nach der Anmeldung werden die Informationen der angemeldeten Person im Speicher des Systems aufgezeichnet Wenn die Tabelle hinzugefügt wird, wird der ID-Wert des Bedieners gleichzeitig für spätere Statistiken und Audits in die Tabelle geschrieben II. Die Erstellungszeit ähnelt der Bedeutung des Erstellers. Beim Erstellen wird der Wert dieses Felds im Allgemeinen vom Server und nicht vom Client übernommen , können Sie SYSDATE direkt als Wert dieses Feldes verwenden III. Die zuletzt geänderte Person Nachdem ein Datensatz erstellt wurde, kann dieser auch geändert werden. Hier ist ein Datensatz der geänderten Person erforderlich, um eine spätere Prüfung zu erleichtern. Hier ist jedoch zu beachten, dass hier nur die letzten Änderungsinformationen aufgezeichnet werden. Wenn ein Datensatz mehrmals geändert wurde, sind die Änderungen in der Mitte spurlos. Wenn Sie detaillierte Änderungsinformationen aufzeichnen müssen. Sie müssen die Protokollfunktion verwenden. Die Funktionalität dieses Felds wurde überschritten. IV. Das letzte Änderungsdatum wird gleichzeitig mit der letzten Änderungsperson in den Datensatz geschrieben. Ebenso ist es der Zeitpunkt, zu dem die letzte Änderung aufgezeichnet wird. Alle Änderungen in der Mitte werden durch die letzte Änderung überschrieben . 2. Status- und Gültigkeitsfelder Bei einigen Nachrichteninhalten kommt es oft auf Aktualität an, das heißt, eine Nachricht darf nur innerhalb eines bestimmten Zeitraums für die Außenwelt sichtbar sein und darüber hinaus nicht zugelassen werden Wenn es ein Problem mit einigen Inhalten gibt und diese vorübergehend für die Außenwelt gesperrt werden müssen, können Sie das Statusfeld wie folgt verwenden:

字段名称

类型

说明

LAST_UPDATE_DATE

DATE

最后修改日期

LAST_UPDATED_BY

NUMBER(15)

最后修改人

CREATION_DATE

DATE

创建日期

CREATED_BY

NUMBER(15)

创建人

Feldname

Typ

Beschreibung

LAST_UPDATE_DATE

DATUM

Datum der letzten Änderung

LAST_UPDATED_BY

NUMBER(15)

Zuletzt geändert von

ERSTELLUNGSDATUM

Erstellungsdatum

字段名称

类型

说明

STATUS

NUMBER

状态

START_DATE

DATE

有效开始日期

END_DATE

DATE

有效结束日期

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:

字段名称

类型

说明

DELETED

NUMBER

是否删除

DELETE_DATE

DATE

删除时间

DELETED_BY

NUMBER

删除人

Feldname
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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage