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

Ensemble de problèmes 2 – Identification des entités et des attributs

Dans un article précédent sur la modélisation des données, nous avions promis de vous donner une série d'exercices pour vous entraîner à trouver des entités et des attributs. Voici le deuxième volet de notre problématique. Profitez-en.

Problème 1 :Pays

Description :

Trouvez les bonnes entités et leurs attributs pour représenter tous les pays du monde, leurs régions intérieures (qui peuvent être appelées états, provinces ou régions) et leurs villes. Nous voulons représenter le nom, le continent, la date d'indépendance, le type de gouvernement et la population de chaque pays. Pour chaque région (ou province, état, etc.) nous souhaitons stocker la capitale, le nom du gouverneur et la population. Enfin, pour chaque ville, nous voulons avoir le nom, la date de fondation, la population et le nombre d'écoles par habitant. Nous aimerions également représenter ce que chaque pays appelle ses régions intérieures.

Solution :

À partir de la description du problème de domaine, nous pouvons clairement identifier 3 entités :Country , Region et City .

Pour le Country entité nous retrouvons les attributs suivants :name , governmentType , population et independenceDay .

Pour la Region entité, on découvre les attributs name , governorName , population et capitalCity .

Pour City , nous avons name , foundationDate , population et schoolsPerHabitant .

La modélisation des données se fait par étapes appelées itérations. À ce stade, nous itérons. Nous retournons au Country entité et ajoutez un nouvel attribut. La dernière phrase de la description nous demandait de représenter le nom de chaque pays pour ses régions intérieures. Ce nom doit être au niveau du pays, nous allons donc ajouter un nouvel attribut appelé categoryRegion au Country entité.

Question :

La population est représentée au Country , Region et City niveaux. Pensez-vous que c'est correct? Des informations en double sont-elles stockées ? Comment autorisez-vous cela ?


↑ Cliquez sur le logo pour prévisualiser le modèle dans votre navigateur | Téléchargez le modèle au format png


Problème 2 :Avion

Description :

Une nouvelle compagnie aérienne à bas prix veut entrer sur le marché et a besoin d'un système simple pour gérer ses actifs. Pour nous aider à construire le bon système, nous avons demandé à quelques personnes de définir les informations clés pour toute nouvelle compagnie aérienne. Sur la base des commentaires ci-dessous, suggérez quelques entités avec des attributs pour un système de gestion d'avion.

Un pilote expérimenté :

J'ai travaillé dans pas mal de compagnies aériennes et j'ai passé des milliers d'heures dans les airs. Ils demandent toujours les mêmes informations lorsque je change d'employeur. Premièrement, ils veulent connaître mon nom, ma date de naissance – de nombreuses compagnies aériennes n'emploient que des pilotes d'une certaine tranche d'âge. Et ils doivent toujours vérifier ma certification - j'ai un numéro de licence spécial qui les aide à le faire. Le nombre d'heures de vol est également très important; cela leur en dit long sur le pilote. Heureusement que j'ai autant d'expérience ! Et, bien sûr, on me donne toujours un numéro d'employé - je ne sais pas pourquoi, mais ils se réfèrent à moi en utilisant le numéro au lieu de mon nom de famille.

Représentant d'un avionneur :

Chaque compagnie aérienne a besoin d'avions. La description complète de tout avion est très complexe et je pourrais continuer à décrire mes produits pendant des lustres, mais les cols blancs des compagnies aériennes ne s'intéressent généralement qu'aux informations de base. Bien sûr, ils veulent savoir combien de passagers peuvent voler dans un avion - cela les aide à calculer les coûts, les avantages, etc. Et ils demandent toujours l'autonomie de croisière afin de savoir jusqu'où chaque avion peut voler. Bien sûr, ils ont besoin du nom du fabricant et du nom du modèle à mettre dans leurs livres. Oh, et d'après ce que j'ai entendu, ils donnent toujours des numéros internes spéciaux à tous les avions qu'ils achètent.

Un contrôleur aérien :

Il y a quelques faits de base que nous gardons sur chaque vol à notre aéroport. Le vol doit avoir un certain numéro pour des raisons d'identification, (comme FG 432). Nous avons besoin de connaître les aéroports de départ et d'arrivée. Et le temps est aussi très important. Nous stockons non seulement les heures de départ et d'arrivée prévues, mais également les heures réelles - les avions peuvent être en retard ou même arriver en avance.

Solution :

Dans notre description, nous identifions clairement 3 entités :Aircraft , Pilot et Flight . Ensuite, nous trouvons les attributs de chaque entité.

Pour le Aircraft entité que nous avons manufacturer , model , passengerCapacity , cruisingRangeMiles et internalNumber .

Pour le Pilot entité, nous découvrons les attributs suivants :employeeNumber , firstName , name , birthDate , licenseNumber et flownHours .

Enfin, pour Flight nous identifions le flightNumber , departureAirport , destinationAirport , scheduledDepartureTime , scheduledArrivalTime , realDepartureTime , et realArrivalTime .

Pour simplifier ce modèle de données, nous supposons que tous les vols sont programmés tous les jours de la semaine.


↑ Cliquez sur le logo pour prévisualiser le modèle dans votre navigateur | Téléchargez le modèle au format png


Dans certains cas, notre description de domaine inclut des attributs que nous devons ignorer. Par exemple, nous avons décidé d'exclure la durée du vol à partir de ce modèle de données car nous pouvons le calculer à partir des heures d'arrivée et de départ réelles.

Problème 3 :Guide des restaurants

Description :

Samuel veut créer un guide de restaurants en ligne. Il existe déjà de nombreux sites Web de ce type, mais il souhaite se concentrer sur les plats particuliers disponibles plutôt que sur le restaurant lui-même. Il est vraiment enthousiasmé par son idée et voici comment il nous l'a décrite :

Je souhaite décrire les restaurants en détail sur mon site. J'ai donc besoin des informations de base telles que leurs noms et adresses. L'adresse doit être précise :non seulement la rue et le numéro, mais aussi la ville, l'état et le pays. Oui, pays; Je veux m'internationaliser ! De plus, je veux qu'on donne à chacun d'eux un style particulier, comme, tu sais, le chinois, l'italien, ou quelque chose comme ça. Chacun d'eux sera classé avec un certain nombre d'étoiles.

Plus important encore, je veux me concentrer sur la nourriture ! Les restaurants servent des milliers de repas, et pour chacun d'eux, j'ai besoin du nom et du type du plat - entrée, plat principal ou dessert. Il existe différents apéritifs dans différents pays, j'ai donc également besoin de stocker des informations sur les origines des apéritifs. Et pour les plats principaux… eh bien, je pense que ce sera bien de fournir le nombre de calories pour les personnes au régime. Les desserts doivent également contenir ce type d'informations.

Et je veux que CHAQUE plat soit affiché, ainsi que son prix actuel ! Oh, ça me rappelle :mettons des boissons là aussi. Le nom, le prix… et peut-être le degré d'alcool, pensez-y.

Sur la base de la description ci-dessus, suggérez quelques entités et leurs attributs pour le guide des restaurants en ligne de Samuel.

Solution :

La première entité que nous avons est Restaurant avec les attributs de name , addressStreet , addressNumber , city , state et country . Autres attributs dans Restaurant sont :stars et style .

Notre prochaine idée pourrait être de créer une entité appelée Meal et donnez-lui les attributs name , type et price . Cependant, si nous lisons la description complète du problème, nous trouverons des attributs spécifiques pour les desserts, les plats principaux et les entrées. Nous décidons donc de supprimer Meal et partez avec 3 entités :Main_course , Appetizer et Dessert .

Pour MainCourse , nous aurons les attributs suivants :name , category et price .

Pour l'Appetizer entité, nous avons des attributs appelés name , country et price .

Pour Dessert on retrouve les attributs name , calories et price .

Enfin, le Beverage entité avec les attributs name , alcoholLevel et price .


↑ Cliquez sur le logo pour prévisualiser le modèle dans votre navigateur | Téléchargez le modèle au format png


Problème 4 :Groupes de musique

Description :

Une société de production musicale veut modéliser le monde des groupes de musique. Nous avons rencontré un de ses représentants et lui avons posé quelques questions. Lisez l'interview ci-dessous et trouvez les bonnes entités et leurs attributs pour un modèle de groupes de musique.

Vertabe : Quel genre de personnes y a-t-il dans le monde de la musique ?

Représentant : Beaucoup, mais je pense que nous n'en avons besoin que de quelques-uns. Les groupes sont composés de chanteurs et de musiciens. Et, bien sûr, leurs managers. Pour chacun d'entre eux, nous voulons que leurs noms et prénoms soient dans le système. Les chanteurs et les musiciens ont généralement aussi un surnom. Les musiciens jouent d'un certain instrument et les chanteurs ont un type de voix particulier, comme le soprano ou le ténor.

V : Qu'en est-il des gestionnaires? Comment restez-vous en contact avec eux ?

R : Ça dépend. Certains d'entre eux préfèrent les téléphones portables pour une communication rapide, d'autres aiment recevoir des e-mails pour pouvoir réfléchir à tout. Je pense que nous avons besoin des deux types d'informations ici.

V : Et tous ces gens…

R : … former des groupes de musique, oui. Chaque groupe a un nom, bien sûr. Ils jouent généralement différents types de musique, mais nous les attribuons toujours à un seul style, comme le rock ou le métal. C'est important. Il faut savoir depuis combien de temps ils jouent ensemble, car les jeunes groupes ont tendance à monter et à disparaître très vite. Nous voulons généralement savoir quand ils ont joué leur dernier concert et quel était le prix du billet.

V : Avez-vous besoin d'autre chose ?

R : Nous devons stocker des informations sur les chansons. Wow, les chansons sont compliquées. Ils ont des paroles spécifiques, une certaine tonalité, un certain nombre d'instruments impliqués... des trucs vraiment compliqués.

V :Et est-ce que tout cela est important pour vous ?

R : Eh bien, oui, mais nous avons déjà un système pour les chansons, donc ici nous pouvons… eh bien, je pense que nous serons bons avec juste le nom et la durée de la chanson. Et peut-être la date de création.

Question :

Étant donné une chanson, pouvons-nous utiliser ce modèle de données pour la faire correspondre à son groupe ? Ou manque-t-il quelque chose ?

Solution :

La première entité que nous trouvons est MusicBand avec les attributs name , mainStyle , foundationDate , lastShowDate et lastShowPlace .

L'entité suivante est Musician , où nous avons les attributs suivants :firstName , name , nickName et instrument .

Le Singer l'entité poursuit un schéma similaire :nous avons comme attributs le firstName du chanteur , name , nickName , et voiceLevel .

Notre prochaine entité est Song , qui a les attributs suivants :name , duration et creationDate .

Enfin, la dernière entité que nous avons identifiée est Manager; il a les attributs de firstName , name , emailAddress et cellPhone .


↑ Cliquez sur le logo pour prévisualiser le modèle dans votre navigateur | Téléchargez le modèle au format png