sql >> Database >  >> RDS >> Database

Probleemset 2 – Entiteiten en attributen identificeren

In een eerder artikel over datamodellering beloofden we u een reeks oefeningen te geven om te oefenen met het vinden van entiteiten en attributen. Hier is de tweede aflevering van onze probleemset. Geniet ervan.

Probleem 1:Landen

Beschrijving:

Vind de juiste entiteiten en hun attributen om alle landen in de wereld, hun binnenregio's (die staten, provincies of regio's kunnen worden genoemd) en hun steden te vertegenwoordigen. We willen de naam, het continent, de datum van onafhankelijkheid, het type regering en de bevolking van elk land vertegenwoordigen. Voor elke regio (of provincie, staat, enz.) willen we de hoofdstad, de naam van de gouverneur en de bevolking opslaan. Tot slot willen we voor elke stad de naam, de oprichtingsdatum, het aantal inwoners en het aantal scholen per inwoner. We willen ook vertegenwoordigen wat elk land zijn binnenregio's noemt.

Oplossing:

Uit de beschrijving van het domeinprobleem kunnen we duidelijk 3 entiteiten identificeren:Country , Region en City .

Voor het Country entiteit vinden we de volgende attributen:name , governmentType , population en independenceDay .

Voor de Region entiteit, ontdekken we de attributen name , governorName , population en capitalCity .

Voor City , we hebben name , foundationDate , population en schoolsPerHabitant .

Gegevensmodellering gebeurt in fasen die iteraties worden genoemd. Op dit punt herhalen we. We gaan terug naar het Country entiteit en voeg een nieuw attribuut toe. De laatste zin van de beschrijving vroeg ons om de naam van elk land voor zijn binnenregio's weer te geven. Die naam moet op landniveau staan, dus we zullen een nieuw attribuut toevoegen met de naam categoryRegion naar het Country entiteit.

Vraag:

De bevolking is vertegenwoordigd in het Country , Region en City niveaus. Denk je dat dit klopt? Wordt er dubbele informatie opgeslagen? Hoe staat u dit toe?


↑ Klik op het logo om een ​​voorbeeld van het model in uw browser te bekijken | Download het model als een png-bestand


Probleem 2:Vliegtuigen

Beschrijving:

Een nieuwe budgetluchtvaartmaatschappij wil de markt betreden en heeft een eenvoudig systeem nodig om haar activa te beheren. Om ons te helpen het juiste systeem te bouwen, hebben we een paar mensen gevraagd om belangrijke informatie voor een nieuwe luchtvaartmaatschappij te definiëren. Stel op basis van de onderstaande opmerkingen enkele entiteiten voor met attributen voor een vliegtuigbeheersysteem.

Een ervaren piloot:

Ik heb bij nogal wat luchtvaartmaatschappijen gewerkt en heb duizenden uren in de lucht doorgebracht. Ze vragen altijd dezelfde informatie als ik van werkgever verander. Ten eerste willen ze mijn naam weten, mijn verjaardag - veel luchtvaartmaatschappijen hebben alleen piloten in dienst binnen een bepaalde leeftijdscategorie. En ze moeten altijd mijn certificering controleren - ik heb een speciaal licentienummer dat hen daarbij helpt. Ook het aantal gevlogen uren is erg belangrijk; het vertelt hen veel over de piloot. Gelukkig ben ik zo ervaren! En natuurlijk krijg ik altijd een werknemersnummer - ik weet niet waarom, maar ze verwijzen naar mij met het nummer in plaats van mijn achternaam.

Vertegenwoordiger van een vliegtuigfabrikant:

Elke luchtvaartmaatschappij heeft vliegtuigen nodig. De hele beschrijving van elk vliegtuig is erg ingewikkeld en ik zou nog eeuwen door kunnen gaan met het beschrijven van mijn producten, maar de bedienden van luchtvaartmaatschappijen zijn meestal alleen geïnteresseerd in de basisinformatie. Natuurlijk willen ze weten hoeveel passagiers er in een vliegtuig kunnen vliegen – helpt hen om de kosten, baten enz. te berekenen. En ze vragen altijd naar het vliegbereik, zodat ze weten hoe ver elk vliegtuig kan vliegen. Natuurlijk hebben ze de naam van de fabrikant en de modelnaam nodig om in hun boeken te zetten. Oh, en van wat ik heb gehoord, geven ze altijd speciale interne nummers aan elk vliegtuig dat ze kopen.

Een luchtverkeersleider:

Er zijn enkele basisfeiten die we bijhouden over elke vlucht op onze luchthaven. De vlucht moet om identificatieredenen een bepaald nummer hebben (zoals FG 432). We moeten de vertrek- en aankomstluchthavens kennen. En tijd is ook erg belangrijk. We slaan niet alleen de geplande vertrek- en aankomsttijd op, maar ook de echte tijden - vliegtuigen kunnen te laat zijn of zelfs eerder dan gepland aankomen.

Oplossing:

In onze beschrijving identificeren we duidelijk 3 entiteiten:Aircraft , Pilot en Flight . Dan vinden we de attributen van elke entiteit.

Voor het Aircraft entiteit die we hebben manufacturer , model , passengerCapacity , cruisingRangeMiles en internalNumber .

Voor de Pilot entiteit ontdekken we de volgende attributen:employeeNumber , firstName , lastName , birthDate , licenseNumber en flownHours .

Tot slot, voor Flight we identificeren het flightNumber , departureAirport , destinationAirport , scheduledDepartureTime , scheduledArrivalTime , realDepartureTime , en realArrivalTime .

Om dit datamodel te vereenvoudigen, gaan we ervan uit dat alle vluchten op alle dagen van de week zijn gepland.


↑ Klik op het logo om een ​​voorbeeld van het model in uw browser te bekijken | Download het model als een png-bestand


In sommige gevallen bevat onze domeinbeschrijving kenmerken die we moeten negeren. We hebben bijvoorbeeld besloten om vluchtduur uit te sluiten uit dit datamodel omdat we het kunnen berekenen uit de werkelijke aankomst- en vertrektijden.

Probleem 3:Restaurantgids

Beschrijving:

Samuel wil een online restaurantgids maken. Er zijn al veel van dergelijke websites, maar hij wil zich concentreren op de specifieke gerechten die beschikbaar zijn in plaats van op het restaurant zelf. Hij is erg enthousiast over zijn idee en dit is hoe hij het ons beschreef:

Ik wil restaurants in detail beschrijven op mijn site, dus ik heb de basisdingen nodig, zoals hun namen en adressen. Het adres moet nauwkeurig zijn:niet alleen de straat en het nummer, maar ook de stad, staat en land. Ja, land; Ik wil internationaal! Bovendien wil ik dat ze elk een bepaalde stijl krijgen, zoals Chinees, Italiaans of iets dergelijks. Elk van hen wordt gerangschikt met een bepaald aantal sterren.

Wat nog belangrijker is, ik wil me concentreren op het eten! Restaurants serveren duizenden maaltijden en voor elk daarvan heb ik de naam en het type van het gerecht nodig:voorgerecht, hoofdgerecht of dessert. Er zijn verschillende voorgerechten in verschillende landen, dus ik moet ook informatie over de oorsprong van de voorgerechten opslaan. En voor hoofdgerechten... nou, ik denk dat het leuk zal zijn om het aantal calorieën te geven voor mensen die een dieet volgen. Desserts zouden dit soort informatie ook moeten bevatten.

En ik wil dat ELK gerecht wordt getoond, samen met de huidige prijs! Oh, dat herinnert me eraan:laten we daar ook drankjes op zetten. De naam, de prijs... en misschien het alcoholgehalte, denk er eens over na.

Stel op basis van de bovenstaande beschrijving enkele entiteiten en hun kenmerken voor voor de online restaurantgids van Samuel.

Oplossing:

De eerste entiteit die we hebben is Restaurant met de attributen van name , addressStreet , addressNumber , city , state en country . Andere kenmerken in Restaurant zijn:stars en style .

Ons volgende idee zou kunnen zijn om een ​​entiteit te creëren met de naam Meal en geef het de attributen name , type en price . Als we echter de volledige probleembeschrijving lezen, vinden we specifieke attributen voor desserts, hoofdgerechten en voorgerechten. Dus besluiten we om Meal en ga met 3 entiteiten:Main_course , Appetizer en Dessert .

Voor MainCourse , hebben we de volgende attributen:name , category en price .

Voor het Appetizer entiteit, we hebben attributen genaamd name , country en price .

Voor Dessert vinden we de attributen name , calories en price .

Eindelijk, de Beverage entiteit met heeft de attributen name , alcoholLevel en price .


↑ Klik op het logo om een ​​voorbeeld van het model in uw browser te bekijken | Download het model als een png-bestand


Probleem 4:Muziekbands

Beschrijving:

Een muziekproductiebedrijf wil de wereld van muziekbands modelleren. We ontmoetten een van haar vertegenwoordigers en stelden hem een ​​paar vragen. Lees het onderstaande interview en vind de juiste entiteiten en hun attributen voor een model van muziekbands.

Vertabelo: Wat voor mensen zijn er in de muziekwereld?

Vertegenwoordiger: Veel, maar ik denk dat we er maar een paar nodig hebben. Bands bestaan ​​uit zangers en muzikanten. En natuurlijk hun managers. Voor hen allemaal willen we hun voor- en achternaam in het systeem. Zangers en muzikanten hebben meestal ook een bijnaam. Muzikanten bespelen een bepaald instrument en zangers hebben een bepaald stemtype, zoals sopraan of tenor.

V: Hoe zit het met managers? Hoe houdt u contact met hen?

R: Het hangt er van af. Sommigen van hen geven de voorkeur aan mobiele telefoons voor snelle communicatie, anderen ontvangen graag e-mails zodat ze alles kunnen overdenken. Ik denk dat we hier beide soorten informatie nodig hebben.

V: En al deze mensen...

R: … muziekbands vormen, ja. Elke band heeft natuurlijk een naam. Ze spelen meestal verschillende soorten muziek, maar we wijzen ze altijd toe aan slechts één stijl, zoals rock of metal. Dat is belangrijk. We moeten weten hoe lang ze al samen spelen, want jonge bands hebben de neiging om heel snel op te komen en te verdwijnen. We willen meestal weten wanneer ze hun meest recente concert hebben gespeeld en wat de ticketprijs was.

V: Heb je nog iets nodig?

R: We moeten informatie over liedjes opslaan. Wow, liedjes zijn ingewikkeld. Ze hebben specifieke soorten teksten, een bepaalde toonsoort, een aantal betrokken instrumenten... echt ingewikkelde dingen.

V:En is dit allemaal belangrijk voor je?

R: Nou ja, maar we hebben eigenlijk al een systeem voor nummers, dus hier kunnen we ... nou, ik denk dat we goed zullen zijn met alleen de naam en de duur van het nummer. En misschien de aanmaakdatum.

Vraag:

Gegeven een nummer, kunnen we dit datamodel gebruiken om het te matchen met zijn band? Of ontbreekt er iets?

Oplossing:

De eerste entiteit die we vinden is MusicBand met de attributen name , mainStyle , foundationDate , lastShowDate en lastShowPlace .

De volgende entiteit is Musician , waar we de volgende attributen hebben:firstName , lastName , nickName en instrument .

De Singer entiteit volgt een soortgelijk patroon:we hebben als attributen de firstName . van de zanger , lastName , nickName , en voiceLevel .

Onze volgende entiteit is Song , die de volgende kenmerken heeft:name , duration en creationDate .

Ten slotte is de laatste entiteit die we hebben geïdentificeerd Manager; het heeft de attributen van firstName , lastName , emailAddress en cellPhone .


↑ Klik op het logo om een ​​voorbeeld van het model in uw browser te bekijken | Download het model als een png-bestand



  1. MySQL-installatie:FOUT:kan de native extensie voor gem niet bouwen

  2. Hoe vind ik Unicode/niet-ASCII-tekens in een NTEXT-veld in een SQL Server 2005-tabel?

  3. PL/SQL-functie in Oracle kan DBMS_AQ niet zien

  4. Maak verbinding met mysql in een docker-container van de host