Database
 sql >> Base de données >  >> RDS >> Database

Comment créer un modèle de base de données à partir de zéro

Vous souhaitez donc créer votre premier modèle de base de données mais vous ne savez pas par où commencer ? Continuez à lire !

Je suppose que vous connaissez déjà un peu les tables, les colonnes et les relations. Si ce n'est pas le cas, regardez nos didacticiels vidéo avant de continuer.

Commencez par une description du système

Vous devez toujours commencer à créer un modèle de base de données avec une description d'un système. Dans une situation de classe, une description du système vous est donnée par un enseignant. Dans la vraie vie, préparer une description est un processus dans son droit. Je supposerai simplement que vous avez la description. Peu importe qu'il vous ait été donné par votre client, votre patron, votre professeur ou que vous l'ayez écrit vous-même.

Jetez un œil à la description et surlignez tous les noms . Les noms dans la description peuvent être grossièrement divisés en trois catégories :tableaux, attributs et exemples.

  • Tableaux représentent les entités principales du système :personnes, objets physiques, événements, transactions, etc.
  • Attributs sont des propriétés associées à une entité principale. Ils décrivent les caractéristiques de votre entité. Dans le modèle de base de données, ce seront les colonnes de vos tables.
  • Exemples ne sont que cela, des exemples. Ils vous aident à comprendre les types de données de certains attributs et ils vous aident à comprendre la relation entre différentes entités.

Commencer par une description a l'avantage de vous obliger à utiliser le même glossaire comme vos utilisateurs. Si vous créez un système pour une école primaire, vous devriez parler des élèves. Si vous créez un système similaire pour une université, vous devriez parler des étudiants.

Tableaux, relations, colonnes

  1. Une fois vos noms surlignés, identifiez les tableaux . Vous n'êtes pas obligé de tout modéliser en même temps. Concentrez-vous d'abord sur les fonctionnalités de base du système.
  2. Lorsque vous avez les tableaux, déterminez les relations entre les tables. Cette étape peut conduire à l'introduction de nouvelles tables intermédiaires (de jonction).
  3. Ajoutez enfin les colonnes aux tables.

À ce stade, vous devriez relire la description et voir s'il manque quelque chose. Je vous assure qu'il y aura quelque chose à ajouter. Ajoutez les nouvelles tables, les nouvelles relations et les nouvelles colonnes. Relisez la description...

Éléments à garder à l'esprit

La création d'un modèle de base de données est une itération processus. N'essayez pas de tout modéliser à la fois. Commencez par les entités principales de votre système. Vous pourrez ajouter plus de détails ultérieurement.

Vous pouvez poser des questions . Peu importe la précision de la description, vous aurez toujours des doutes. Quelque chose sera toujours sous-spécifié. Posez des questions sur les choses dont vous n'êtes pas sûr. Si vous ne pouvez pas poser de questions, faites une hypothèse raisonnable et notez-la.

Il y a toujours plusieurs voies modéliser chaque système. Certains modèles sont clairement mauvais, mais avec la plupart des autres, il est difficile de juger s'ils sont bons ou mauvais. Le modèle dépend de l'objectif du système, de la manière dont les données parviennent au système, voire des goûts personnels du concepteur. Au fur et à mesure que vous acquerrez de l'expérience, vous gagnerez en confiance dans vos décisions de conception.

Exemple :système de location de voitures

À titre d'exemple, nous allons créer un modèle de base de données pour un système de location de voitures. Tout d'abord, jetez un œil à une description du système :

Une entreprise de location de voitures loue des voitures à des clients. L'entreprise possède plusieurs voitures. Chaque voiture a une marque, un nom de modèle, une année de production, un kilométrage, une couleur, etc. Les voitures sont divisées en différentes catégories :petites, moyennes, grandes, limousines.

L'entreprise a de nombreux emplacements où vous pouvez louer une voiture. Les emplacements de location sont situés dans différentes villes du pays. Il peut y avoir plusieurs sites d'entreprise dans une ville.

Toute personne de plus de 21 ans titulaire d'un permis de conduire valide peut louer une voiture. Les clients de moins de 25 ans ou de plus de 75 ans paient des frais différents (plus élevés) que les autres clients.

Avant de louer une voiture, un client effectue généralement une réservation pour une voiture. Un client spécifie les dates auxquelles la voiture sera louée, le lieu de prise en charge, le lieu de restitution et la catégorie de voiture qu'il souhaite louer. Un client peut spécifier qu'il souhaite un équipement supplémentaire dans la voiture, par exemple un GPS, un siège auto pour un enfant, etc.

Lorsqu'un client loue une voiture, il déclare le lieu de prise en charge et de restitution, ainsi que la date de restitution. Le client peut souscrire différents types d'assurance. Il peut également décider qu'il n'a pas besoin d'assurance parce que l'assurance est couverte autrement, par exemple par sa société de carte de crédit. Le client peut choisir des options supplémentaires telles que la possibilité d'un retour anticipé, diverses options de ravitaillement, etc.

Le client paie les frais lorsqu'il rend la voiture.

Nous commençons par surligner tous les noms : 

L'étape suivante consiste à trouver des tableaux . Nous recherchons les entités de base dans le système. Pour commencer, vous devez au moins avoir ces éléments :voiture, client, emplacement, ville, équipement, catégorie (de voiture), assurance. Nous les mettons dans le diagramme. J'ai ajouté le id colonne dans chaque table car chaque table doit avoir une sorte d'identifiant. Vous pouvez toujours changer la clé primaire plus tard.




Les entités de base du système sont dans le modèle, mais vous devriez remarquer qu'il nous manque la fonctionnalité de base du système :la location de voitures et les réservations. Rappelez-vous ce que nous avons dit au début :les tables ne sont pas seulement des objets physiques mais aussi des événements et des transactions. Vous devez ajouter reservation et rental également sous forme de tableaux. C'est parti :




Maintenant, nous ajoutons les références entre les tables dans le modèle. J'ai numéroté les références au fur et à mesure que je les ai ajoutées. La note à côté de chaque référence vous indique quand elle a été ajoutée :

  1. Chaque voiture appartient à une catégorie,
  2. Chaque réservation est pour une catégorie de voitures,
  3. Chaque emplacement se trouve dans une ville,
  4. Chaque réservation a un lieu de prise en charge et un lieu de dépôt,
  5. Chaque réservation est effectuée par un client,
  6. Chaque location est effectuée par un client,
  7. Chaque location est pour une certaine voiture,
  8. Chaque location dispose d'un lieu de prise en charge et d'un lieu de restitution.
  9. Chaque location est liée à une assurance. Mais n'y a-t-il qu'une seule assurance pour chaque location ? Non. Il peut y avoir de nombreuses assurances liées à une location (assurance contre les dommages au véhicule, contre les dommages corporels, contre les dommages à la voiture d'autrui, ...). J'ai ajouté une table intermédiaire appelée rental_insurance connecté à rental et insurance tableaux.



Il nous manque encore la référence entre la voiture et l'équipement. L'équipement est-il fixé en permanence à une voiture ou peut-il être déplacé d'une voiture à l'autre ? Il n'y a pas de réponse à cette question dans la description, nous ferons donc une hypothèse raisonnable :oui, il peut être déplacé. Nous ajoutons une nouvelle table car_equipment et références entre car et equipment .

Nous supprimons la company table. La société de location est implicitement présente dans le système. Après tout, une autre entreprise aura son propre système et sa propre base de données.




Enfin, nous ajoutons les colonnes et leurs types de données. Nous remarquons également qu'il n'y a pas de relation entre reservation et equipment . Mais la réservation est-elle faite pour un équipement particulier ? Non, c'est fait pour un type d'équipement :on ajoute le tableau equipment_category et connectez les tables reservation et equipment à elle.




Avons-nous fini? Relisez la description. Notre modèle de base de données omet toujours les frais. Eh bien...

C'est un exercice pour le lecteur. (Mais si vous n'avez pas envie de mettre en pratique vos compétences en modélisation de base de données, vous trouverez ici une structure de base de données prête à l'emploi pour une société de location de voitures.)