Maison  >  Article  >  Applet WeChat  >  Conseils de développement de programmes Oracle

Conseils de développement de programmes Oracle

高洛峰
高洛峰original
2017-02-11 11:14:301907parcourir

Oracle présente de nombreux avantages, mais s'il est mal utilisé, ses puissants avantages ne peuvent pas être exercés. Voici une petite expérience que j'ai accumulée dans le processus de développement d'Oracle à partager avec vous.

1. L'utilisation de champs dans la conception de bases de données

Dans la conception de certains tableaux, il existe des paragraphes couramment utilisés, qui sont fondamentalement devenus un standard dans les grands systèmes, que vous pouvez souvent voir. ces Traces de champs, bien que les noms des champs puissent varier. Les champs couramment utilisés sont divisés dans les catégories suivantes :

1.Champ QUI

Ce type de champ est principalement utilisé pour enregistrer les informations de changement d'opération de chaque ligne d'enregistrements, comme par exemple qui a ajouté ceci rangée d'enregistrements et qui l'a fait Modifications, etc., la description détaillée est la suivante :

DATE

tr>I. Créateur Dans n'importe quel système, il y a généralement un processus de vérification des autorisations et de connexion. Après la connexion, les informations de la personne connectée seront enregistrées dans la mémoire du système. Lorsque cette personne se connecte à une certaine partie de la base de données. le tableau est ajouté, la valeur ID de l'opérateur sera écrite dans le tableau en même temps pour des statistiques et un audit ultérieurs II. L'heure de création est similaire à la signification du créateur. Lors de la création, l'heure actuelle du système est écrite. La valeur de ce champ est généralement extraite du serveur plutôt que du client. , vous pouvez utiliser SYSDATE directement comme valeur de ce champ III. La dernière personne modifiée Une fois qu'un enregistrement est créé, il peut également être modifié. Ici, un enregistrement de la personne modifiée est nécessaire pour faciliter un audit ultérieur. Mais ce qu'il faut noter ici, c'est que seules les informations de la dernière modification sont enregistrées ici. Si un enregistrement a été modifié plusieurs fois, les modifications au milieu seront sans trace. Si vous devez enregistrer des informations de modification détaillées, vous devez utiliser la fonction de journalisation, la fonctionnalité de ce champ a été dépassée. IV. La date de la dernière modification est inscrite dans le dossier en même temps que la dernière personne modifiante. De même, c'est aussi l'heure à laquelle la dernière modification est enregistrée. Toutes les modifications du milieu sont écrasées par la dernière modification. . 2. Champs de statut et de validité Dans certains contenus d'actualité, il y a souvent une question d'actualité, c'est-à-dire qu'une actualité ne peut être visible par le monde extérieur que pendant une certaine période de temps, et elle ne sera pas autorisée au-delà cette période de sortie, et parfois s'il y a un problème avec certains contenus et qu'il doit être temporairement bloqué du monde extérieur, vous pouvez utiliser le champ d'état comme suit :

字段名称

类型

说明

LAST_UPDATE_DATE

DATE

最后修改日期

LAST_UPDATED_BY

NUMBER(15)

最后修改人

CREATION_DATE

DATE

创建日期

CREATED_BY

NUMBER(15)

创建人

Nom du champ

Type

Description

LAST_UPDATE_DATE

DATE

Date de dernière modification

LAST_UPDATED_BY

NUMBER(15)

Dernière modification par

CREATION_DATE

Date de création

字段名称

类型

说明

STATUS

NUMBER

状态

START_DATE

DATE

有效开始日期

END_DATE

DATE

有效结束日期

CREATED_BY NUMBER(15) Créateur
Nom du champ Type Description
STATUT NUMÉRO Statut
START_DATE DATE Date de début effective
END_DATE DATE Date de fin valide

Je. Statut

Ce champ est généralement exprimé en type numérique, 0 signifie invalide, 1 signifie valide Bien entendu, lors de l'utilisation, ces deux valeurs​​peuvent être échappées et affichées comme "valide" et "invalide". . N'affecte pas les méthodes de stockage.

L'invalidation ne signifie pas la suppression. Le contenu expiré peut être restauré à une utilisation normale après ajustement par le programme de gestion et le statut devient valide.

II. Date de début valide

Si ce champ est renseigné avec une valeur spécifique, les informations ne seront valides que lorsque le temps dépasse cette date, les informations seront automatiquement traitées comme invalides. notez que si ce champ est laissé vide, il doit être traité en ignorant cette vérification de condition, ce qui peut assurer la flexibilité du programme.

III. Date de fin de validité

La signification spécifique est la même que ci-dessus, sauf qu'après cette période, le contenu sera traité comme invalide.

3. Suppression logique

Il existe généralement deux méthodes de suppression dans un système de base de données : la suppression physique et la suppression logique. La suppression dite physique signifie utiliser directement la suppression et d'autres commandes dans la base de données pour supprimer réellement les données de la base de données. . , ce type de suppression ne permettra pas de récupérer les données par les canaux normaux. Bien qu'il puisse réduire partiellement le volume global des données, il n'est pas propice au suivi d'audit ; marqué. Autrement dit, l’attribution d’une valeur à un certain champ indique que l’enregistrement a été supprimé.

La logique de traitement de suppression logique n'est utilisée que par l'application elle-même, car les données existent toujours dans la base de données.

Les champs concernés sont les suivants :

字段名称

类型

说明

DELETED

NUMBER

是否删除

DELETE_DATE

DATE

删除时间

DELETED_BY

NUMBER

删除人

Nom du champ
Type Description
SUPPRIMÉ NUMÉRO Supprimer
DELETE_DATE DATE Supprimer l'heure
DELETED_BY NUMÉRO Supprimer une personne

Je. Indicateur de suppression

Ce champ a deux valeurs, 0 signifie normal, 1 signifie supprimé.

Après avoir marqué la marque de suppression, toutes les instructions de requête doivent également ajouter la condition delete=0 dans la condition de jugement, sinon cela provoquera des erreurs majeures.

II. L'heure de suppression

est utilisée avec l'indicateur de suppression pour indiquer l'heure de suppression. Vous pouvez utiliser l'heure actuelle du serveur et la remplir avec sysdate.

III. Personne de suppression

Semblable à la dernière personne de modification, l'opérateur spécifique de la suppression doit être enregistré

La suppression est différente du bit de drapeau La méthode du bit de drapeau est utilisée. ne peut pas afficher les données, le personnel de gestion en arrière-plan Le statut peut également être ajusté via le programme de gestion, mais l'indicateur de suppression est différent Une fois la suppression confirmée, l'enregistrement doit être compris comme n'existant pas pour l'ensemble de l'application.

4. Champ d'auto-incrémentation

Le champ dit d'auto-incrémentation fait référence à un champ qui peut être automatiquement augmenté au fil de l'utilisation.

La valeur de ce champ n'a généralement pas de signification claire et n'est utilisée que pour un identifiant unique. Ce champ est généralement défini comme une clé primaire.

Si l'application cible uniquement Oracle et ne prend pas en compte l'indépendance de la base de données, alors la séquence est le meilleur choix. Pour ceux qui utilisaient d'autres bases de données telles que MSSQL dans le passé, l'utilisation d'Oracle est tout simplement trop laborieuse. Il faut beaucoup d'efforts pour créer un champ à incrémentation automatique. Cependant, de ce fait, cela pose également des problèmes par rapport aux autres. les bases de données ne peuvent pas Par rapport aux avantages, par exemple, un système de commande a à la fois des en-têtes de commande et des lignes de commande. Généralement, l'en-tête de commande est inséré en premier, puis les lignes de commande sont insérées. Pour les champs à incrémentation automatique dans les bases de données telles que MSSQL. des informations spécifiques ne peuvent être connues qu'après l'insertion. Quelle est la valeur d'ID de L'essentiel est que l'effet de séquence est très élevé et qu'il n'y a pas lieu de s'inquiéter des problèmes de performances.

5. Champs flexibles

Lors de la conception de la structure des tables de la base de données, il est préférable de réserver quelques champs de rechange, car avec l'utilisation du système, il est généralement nécessaire d'ajouter des champs. L'avantage des champs réservés est qu'ils peuvent être activés uniquement lorsque cela est nécessaire. Les opérations DDL ne sont pas nécessaires. Le risque de maintenance ultérieure de la base de données est très faible. De plus, les opérations DDL générales entraîneront l'échec de VIEW/PACKAGE et d'autres programmes en cascade. . Champs réservés Si vous ajoutez des champs élastiques, vous n'aurez pas ce problème.

Les champs réservés peuvent également être divisés en trois types selon le type : type de chaîne, type numérique et type de date. Vous pouvez réserver 10 champs pour chaque type, ou décider en fonction des besoins. :

NUMBER_ATTRIBUTE1

STRING_ATTRIBUTE1

DATE_ATTRIBUTE1

Si le champ élastique n'est pas activé, prendra-t-il trop d'espace de stockage ? La réponse est non, car dans la structure de cette grande base de données, ce n'est que lorsqu'un champ est réellement utilisé qu'il occupera l'espace réel. Sinon, ce n'est qu'une "description" et n'occupera pas d'espace réel, il n'y aura donc pas de gaspillage d'espace.

6. Champ divisé

Ce n'est pas un type de champ, mais cela signifie que lors de la conception de la table, une grande table peut être divisée de manière appropriée en différentes petites tables pour le stockage. Par exemple, la table utilisateur peut inclure des noms de connexion et un mot de passe. , nom, date de naissance et une série de champs. Dans certains cas, le nombre d'attributs de membre inclus peut atteindre des centaines.

Lorsque la quantité de données est petite, quel que soit le type de stockage, il n'y aura aucun problème de performances, mais lorsque la quantité de données est relativement importante, les problèmes de performances doivent être pris en compte. Si l'index est raisonnable, quelle que soit la quantité de données, la vitesse générale de requête ne sera pas trop lente. Cependant, dans certaines circonstances particulières, lorsque l'index ne peut pas être utilisé, le FTS (appelé analyse complète de la table) le fera. se produire. Ensuite, analysez une petite table et le temps nécessaire pour analyser une grande table est complètement différent, il est donc recommandé de stocker les tables plus grandes séparément et d'extraire plusieurs champs couramment utilisés séparément, de sorte que même si la table entière est analysée, l'efficacité peut être améliorée. être mieux maîtrisé.

Lors de l'utilisation, tant que la table principale et la sous-table ont des index, les combiner pour interroger est fondamentalement la même qu'une vraie grande table, bien que les performances soient nettement plus lentes qu'une vraie grande table. Un peu , mais par contre, comparé aux améliorations de performances, cela en vaut la peine.

Actuellement, certains grands systèmes adoptent cette méthode de fractionnement

2. Utilisation raisonnable des vues

La vue est une représentation de la table de base, elle n'est pas physiquement stockée Les données sont uniquement appelé à partir de la table de base en cas de besoin. Il peut être compris comme un outil qui encapsule un SQL pour une utilisation facile.

Les vues présentent de nombreux avantages :

1. Commodité

Si une requête est complexe, il sera très gênant de la référencer dans le programme. Surtout lorsque ce SQL est appelé à plusieurs reprises dans un programme, le programme deviendra très volumineux si le SQL est encapsulé dans une vue. Rend l’ensemble du programme très frais et propre.

2. Flexibilité

Lorsqu'une table est référencée par plusieurs programmes, si la structure de la table change, alors tous les programmes doivent effectuer les ajustements correspondants, et la charge de travail est très importante Si seulement Si une vue est référencée, nous seulement. Vous devrez modifier la vue correctement et tous les programmes n'auront aucun problème.

3. Sécurité

Une vue ne peut inclure qu'un nombre limité de champs d'une table de base, de sorte que lorsque les autorisations sont publiques, les utilisateurs utilisant la vue peuvent visualiser d'autres champs confidentiels de la table de base.

Les vues présentent de nombreux avantages. Il est recommandé d'utiliser davantage les vues dans le travail réel.

3. PACKAGE

PACKAGE est un package de programme. Sa caractéristique est qu'il peut inclure des variables, des fonctions et des procédures stockées dans un seul package, et que toutes les variables publiques peuvent être partagées dans l'ensemble du package. , c'est son endroit le plus pratique.

Une autre caractéristique du package est que l'interface externe devient plus simple. Quelle que soit la complexité du package à l'intérieur, il suffit d'ouvrir une interface limitée vers le monde extérieur.

Ces caractéristiques du package peuvent être trouvées dans n'importe quel document. Je n'entrerai pas dans les détails ici, je souligne seulement un point ici, qui concerne l'invalidation du package lorsque le programme aspx fait référence à l'oracle. package, cela est dû au cache système, il enregistrera le statut invalide du package. Si le statut d'un package a été recompilé de invalide à valide, alors l'état de l'enregistrement du cache IIS peut ne pas être automatiquement mis à jour et le sera. sera toujours traité comme invalide, ce qui entraînera une erreur système. Afin d'éviter ce genre d'erreur, j'ajoute généralement une fonction publique au package, nommée STATUS. Cette fonction renvoie simplement un chiffre 1. Avant d'appeler d'autres fonctions du package, appelez cette fonction pour vérifier l'état actuel du package. Si 1 peut être renvoyé correctement, vous pouvez continuer les opérations suivantes. Si le retour est vide, cela signifie qu'il y a un problème avec le package actuel et qu'il peut y avoir une interaction pour inviter l'utilisateur à le gérer. Lorsque le traitement de votre transaction nécessite la coordination de plusieurs packages, il est très pénible si le package précédent a été traité avec succès mais que le package ultérieur ne peut pas passer, car cela peut rendre la transaction incomplète, il est donc très nécessaire de vérifier l'état. de tous les colis à l'avance et éliminer tous les dangers possibles à l'avance.

4. Index

Le rôle de l'index est très évident, ce qui peut grandement améliorer la vitesse de vérification, notamment pour les grandes tables, s'il n'y a pas d'index, une analyse complète de la table sera nécessaire. . Il s'agit d'une action très fastidieuse, les index correspondants doivent donc être créés pour accélérer le processus.

Mais parfois, l'index aura un impact négatif, comme un grand nombre d'opérations d'insertion ou de modification et de suppression, car chaque petite action modifiera également l'index en même temps, ce qui réduira considérablement l'efficacité des opérations DML, donc, avant un grand nombre d'opérations DML, il est recommandé de supprimer d'abord l'index, puis de rétablir l'index une fois l'opération terminée, ce qui peut faire gagner beaucoup de temps en termes de temps total.

Pour plus d'articles liés aux conseils de développement de programmes Oracle, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn