Exploration des conseils de conception de base de données

Un des aspects les plus importants de tout projet de développement d'applications est la conception de base de données. Et donc, sans plus tarder, voici quelques conseils pour la conception de bonnes bases de données.

Sommaire

Utilisez le bon nombre de tables

Dans Amadeus, l'empereur d'Allemagne reproche à l'une des œuvres de Mozart comme ayant "trop ​​de notes." Mozart répond avec indignation qu'il utilise ni trop ni trop peu de notes, mais le nombre exact de notes que la composition exige.

Donc, il devrait être avec la conception de base de données. Votre base de données doit avoir autant de tables que l'application nécessite - pas plus, pas moins. Il n'y a pas "droit" numéro unique de tableaux pour toutes les bases.

Les concepteurs de bases de données inexpérimentés ont tendance à utiliser trop peu de tables - parfois essayer de caser une base de données entière de soi de l'information dans un seul tableau. À l'autre extrême se trouvent les bases de données avec des dizaines de tableaux, chacun composé de quelques domaines.

Éviter de répéter des données

Un des principes de base de la conception de base de données relationnelle est de gérer la répétition des données en brisant dehors dans un tableau distinct. Par exemple, dans les vieux jours de traitement de fichier plat, il était courant de créer des enregistrements de facturation qui avaient la place pour un certain nombre de postes. Ainsi le record de la facture aurait champs avec des noms comme Item1, Item2, Élément3 et ainsi de suite.

Mal!




Chaque fois que vous vous trouvez au nombre de noms de domaine comme cela, vous devez créer une table séparée. Dans le cas de l'enregistrement de la facture, vous devez créer un tableau distinct pour stocker les données de l'élément de ligne.

Évitez les données redondantes

Lors de la conception des tableaux qui composent votre base de données, essayez d'éviter de créer des données redondantes. Chaque fois que les données redondantes se glisse dans une base de données, il introduit la probabilité que les données deviendront corrompus. Par exemple, supposons que vous stockez le nom d'un client dans deux tables différentes. Ensuite, si vous mettez à jour le nom de l'une des tables, mais pas l'autre, la base de données est devenu incohérent.

Le type le plus évident de l'erreur redondante de données est de créer un champ qui existe dans deux ou plusieurs tables. Mais il ya des types plus subtiles de données redondantes. Par exemple, envisager une Facturer une table qui contient LineItemTotal champ qui représente la somme de la Global domaines dans chacun des postes de la facture. Techniquement, ce champ représente redondante de données, les données sont également stockées dans le Global champs de chaque élément de la ligne.

Que vous devriez permettre à ce type de redondance dépend de l'application. Dans de nombreux cas, il est préférable de mettre en place avec la redondance pour la commodité et l'efficacité de ne pas avoir à recalculer le total à chaque fois que l'on accède aux données. Mais il est toujours utile d'examiner si la commodité vaut le risque de corrompre les données.

Utilisez une convention de nommage

Pour éviter toute confusion, choisir une convention de nommage pour vos objets de base de données et de s'y tenir. De cette façon, vos tables de base de données, les colonnes, les contraintes et autres objets sera nommé d'une manière cohérente et prévisible. (Il suffit de penser des économies sur l'aspirine.)

Vous pouvez discuter à partir de maintenant jusqu'à ce jour de la Saint Swithen sur ce que les conventions de nommage devrait être. Ça ne fait rien tant. Ce qui importe est que vous faites une convention - et le suivre.

Évitez les valeurs NULL

Permettre valeurs NULL dans vos tables de base de données complique considérablement la programmation de l'application nécessaire pour accéder aux tables. En conséquence, éviter les valeurs NULL en spécifiant NOT NULL quand vous le pouvez. Utilisez les valeurs NULL rarement, et seulement quand vous avez vraiment besoin d'eux.

Null sont souvent mal utilisés de toute façon. L'utilisation correcte de nulle est une valeur qui est unknown- pas pour une valeur vide ou vide. Par exemple, envisager un enregistrement d'adresse typique qui permet à deux lignes d'adresse, du nom Adresse 1 et Adresse 2. La plupart des adresses ont une seule adresse, de sorte que la seconde ligne d'adresse est vide. La valeur de cette seconde ligne d'adresse est, en effet, connu - il est vide. Cela ne veut pas la même chose que nul. Null impliquerait que l'adresse peut avoir une deuxième adresse ligne- nous ne savons tout simplement pas ce qu'il est.

Même pour les colonnes qui peuvent sembler approprié pour les valeurs NULL, il est généralement plus commode de simplement laisser la valeur de colonne vide pour les valeurs qui ne sont pas connus. Par exemple, envisager une numéro de téléphone dans une colonne Client table. Il est sûr de supposer que tous vos clients ont des numéros de téléphone, de sorte qu'il serait correct d'utiliser null pour les numéros de téléphone que vous ne connaissez pas. Cependant, d'un point de vue pratique, il est tout aussi facile d'interdire les valeurs NULL pour la colonne de numéro de téléphone, et de laisser les numéros de téléphone inconnus vide.

Évitez les codes secrets

Eviter les champs avec des noms comme Type de client, où la valeur du champ est l'une des constantes qui ne sont pas définis ailleurs dans la base de données, tels que R pour Vente au détail ou W pour Vente en gros. Vous pouvez avoir seulement ces deux types de clients aujourd'hui, mais les besoins de l'application peut changer dans le futur, ce qui nécessite un troisième type de client.

Une alternative serait de créer une table séparée de codes de type de clientèle (appelez CustomerTypes), Puis créer une contrainte de clé étrangère de sorte que la valeur de la Type de client colonne doit apparaître dans la CustomerTypes table.

Utilisez à bon escient contraintes

Contraintes laissez-vous empêcher la modification de la base de données qui violent la cohérence interne de vos données. Par exemple, une contrainte de vérification vous permet de valider uniquement les données qui répond à certains critères. Par exemple, vous pouvez utiliser une contrainte de vérification pour vous assurer que la valeur d'un champ nommé Cours est supérieur à zéro.

UN contrainte de clé étrangère exige que la valeur d'une colonne dans une table doit correspondre à la valeur qui existe dans une autre table. Par exemple, si vous avez un LineItems table avec une colonne nommée ID de produit, et un Produits table avec une colonne également nommé ID de produit, vous pouvez utiliser une contrainte de clé étrangère à vous assurer que le ID de produit valeur pour chaque ligne de la LineItems tableau correspond à une ligne existante dans la Produits table.

Utilisation déclenche le cas échéant

UN gâchette est une procédure qui se déclenche lorsque certaines données de base de données est mise à jour ou d'y accéder. Les déclencheurs sont un excellent moyen de faire respecter ces règles de base de données qui sont plus compliqués que les contraintes simples. Par exemple, supposons un Facturer table contient une ItemCount colonne dont la valeur est le nombre de postes pour la facture. Une façon de maintenir la valeur de cette colonne automatiquement serait de créer des déclencheurs qui incrémenter le ItemCount colonne chaque fois un élément de ligne est insérée, et de diminuer le ItemCount colonne chaque fois qu'un poste est supprimé. Parfois, l'automatisation est une belle chose.

Utilisez des procédures stockées

Les procédures stockées sont des procédures SQL qui sont niché dans la base de données et en font partie. Il ya plusieurs avantages à l'utilisation des procédures stockées au lieu de SQL dans vos applications de codage:

  • Utilisation des procédures stockées supprime le fardeau de la programmation SQL de vos programmeurs d'applications. Au lieu de cela, il rend le SQL utilisée pour accéder à la base une partie de la base de données elle-même - pas de chichi, pas muss. Tous les programmes d'application ont à faire est d'appeler le appropriée des procédures stockées pour sélectionner, insérer, mettre à jour ou supprimer des données de base de données.
  • Les procédures stockées sont plus efficaces comme un moyen d'opérations de manutention, car le serveur de base de données gère l'ensemble de la transaction.
  • Les procédures stockées sont également plus efficace, car ils réduisent la quantité de trafic réseau entre le serveur de base de données et le serveur Web.
  • Enfin, les procédures stockées sont plus sûrs, car ils réduisent le risque d'attaques par injection SQL.

» » » » Exploration des conseils de conception de base de données