V dřívějším článku o datovém modelování jsme slíbili, že vám poskytneme sadu cvičení pro procvičování hledání entit a atributů. Zde je druhá část naší sady problémů. Užijte si to.
Problém 1:Země
Popis:
Najděte správné entity a jejich atributy, které budou reprezentovat všechny země na světě, jejich vnitřní oblasti (které lze nazvat státy, provincie nebo regiony) a jejich města. Chceme zastupovat název každé země, kontinent, datum nezávislosti, typ vlády a obyvatelstvo. Pro každý region (nebo provincii, stát atd.) chceme uložit hlavní město, jméno guvernéra a počet obyvatel. Nakonec pro každé město chceme mít název, datum založení, počet obyvatel a počet škol na obyvatele. Rádi bychom také reprezentovali to, co každá země nazývá svými vnitřními regiony.
Řešení:
Z popisu problému domény můžeme jasně identifikovat 3 entity:Country
, Region
a City
.
Pro Country
entity najdeme následující atributy:name
, governmentType
, population
a independenceDay
.
Pro Region
entity, objevíme atributy name
, governorName
, population
a capitalCity
.
Pro City
, máme name
, foundationDate
, population
a schoolsPerHabitant
.
Datové modelování se provádí ve fázích nazývaných iterace. V tomto okamžiku opakujeme. Vracíme se do Country
entity a přidejte nový atribut. Poslední věta popisu nás požádala, abychom uvedli název každé země pro její vnitřní oblasti. Tento název by měl být na úrovni země, takže přidáme nový atribut s názvem categoryRegion
do Country
entity.
Otázka:
Populace je zastoupena v Country
, Region
a City
úrovně. Myslíte si, že je to správné? Jsou uloženy duplicitní informace? Jak to dovolíte?
↑ Kliknutím na logo zobrazíte náhled modelu v prohlížeči | Stáhněte si model jako soubor png
Problém 2:Letadlo
Popis:
Nová nízkonákladová letecká společnost chce vstoupit na trh a potřebuje jednoduchý systém pro správu svých aktiv. Abychom nám pomohli vybudovat správný systém, požádali jsme několik lidí, aby definovali klíčové informace pro každou novou leteckou společnost. Na základě níže uvedených komentářů navrhněte několik entit s atributy pro systém řízení letadla.
Zkušený pilot:
Pracoval jsem v několika leteckých společnostech a strávil jsem tisíce hodin ve vzduchu. Vždy požadují stejné informace, když změním zaměstnavatele. Za prvé, chtějí znát mé jméno, moje narozeniny – mnoho leteckých společností zaměstnává piloty pouze v určitém věkovém rozmezí. A vždy potřebují zkontrolovat mou certifikaci – mám speciální licenční číslo, které jim v tom pomáhá. Velmi důležitý je také počet nalétaných hodin; prozradí jim to hodně o pilotovi. Mám štěstí, že jsem tak zkušený! A samozřejmě vždy dostávám číslo zaměstnance – nevím proč, ale odkazují na mě pomocí čísla místo mého příjmení.
Zástupce výrobce letadla:
Každá letecká společnost potřebuje letadla. Celý popis jakéhokoli letadla je velmi složitý a mohl bych v popisování svých produktů pokračovat věky, ale bílé límečky z aerolinek většinou zajímají jen základní info. Samozřejmě chtějí vědět, kolik pasažérů může letět v letadle – pomáhá jim to spočítat náklady, přínosy atd. A vždy se ptají na dolet, aby věděli, jak daleko může každé letadlo doletět. Samozřejmě potřebují jméno výrobce a název modelu, aby je uvedli do svých knih. Jo, a co jsem slyšel, každému letadlu, které si koupí, vždy dávají speciální interní čísla.
Řídicí letového provozu:
O každém letu na našem letišti uchováváme některá základní fakta. Let musí mít z identifikačních důvodů určité číslo (jako FG 432). Potřebujeme znát letiště odletu a příletu. A čas je také velmi důležitý. Ukládáme nejen plánovaný čas odletu a příletu, ale také skutečné časy – letadla mohou mít zpoždění nebo mohou dokonce přiletět s předstihem.
Řešení:
V našem popisu jasně identifikujeme 3 entity:Aircraft
, Pilot
a Flight
. Poté najdeme atributy každé entity.
Pro Aircraft
subjekt máme manufacturer
, model
, passengerCapacity
, cruisingRangeMiles
a internalNumber
.
Pro Pilot
entity zjistíme následující atributy:employeeNumber
, firstName
, lastName
, birthDate
, licenseNumber
a flownHours
.
Nakonec pro Flight
identifikujeme flightNumber
, departureAirport
, destinationAirport
, scheduledDepartureTime
, scheduledArrivalTime
, realDepartureTime
a realArrivalTime
.
Abychom tento datový model zjednodušili, vycházíme z předpokladu, že všechny lety jsou naplánovány na všechny dny v týdnu.
↑ Kliknutím na logo zobrazíte náhled modelu v prohlížeči | Stáhněte si model jako soubor png
V některých případech náš popis domény obsahuje atributy, které musíme ignorovat. Rozhodli jsme se například vyloučit délku letu z tohoto datového modelu, protože jej můžeme vypočítat ze skutečných časů příjezdu a odjezdu.
Problém 3:Průvodce restaurací
Popis:
Samuel chce vytvořit online průvodce restaurací. Takových webů už existuje mnoho, ale on se chce zaměřit spíše na konkrétní dostupná jídla než na restauraci samotnou. Je svým nápadem opravdu nadšený a takto nám ho popsal:
Chci na svém webu podrobně popsat restaurace, takže potřebuji základní věci, jako jsou jejich jména a adresy. Adresa musí být přesná:nejen ulice a číslo, ale také město, stát a země. Ano, země; Chci být mezinárodní! Kromě toho chci, aby každý z nich dostal zvláštní styl, jako, víte, čínský, italský nebo něco podobného. Každá z nich bude hodnocena určitým počtem hvězdiček.
Důležitější je, že se chci zaměřit na jídlo! Restaurace podávají tisíce jídel a pro každé z nich potřebuji název a typ jídla – předkrm, hlavní chod nebo dezert. V různých zemích jsou různé předkrmy, takže si také musím uložit informace o původu předkrmů. A co se týče hlavních chodů... no, myslím, že bude hezké poskytnout lidem na dietách počet kalorií. Tento druh informací by měly obsahovat i dezerty.
A chci, aby bylo zobrazeno KAŽDÉ jídlo spolu s jeho aktuální cenou! Oh, to mi připomíná:dejme si tam také nápoje. Název, cena... a možná i hladina alkoholu, když se nad tím zamyslím.
Na základě výše uvedeného popisu navrhněte několik entit a jejich atributy pro Samuelova online průvodce restaurací.
Řešení:
První subjekt, který máme, je Restaurant
s atributy name
, addressStreet
, addressNumber
, city
, state
a country
. Další atributy v Restaurant
jsou:stars
a style
.
Naším dalším nápadem by mohlo být vytvoření entity s názvem Meal
a přiřaďte mu atributy name
, type
a price
. Pokud si však přečteme kompletní popis problému, najdeme konkrétní atributy pro dezerty, hlavní jídla a předkrmy. Rozhodneme se tedy sešrotovat Meal
a jít se 3 entitami:Main_course
, Appetizer
a Dessert
.
Pro MainCourse
, budeme mít následující atributy:name
, category
a price
.
Pro Appetizer
entity, máme atributy nazvané name
, country
a price
.
Pro Dessert
najdeme atributy name
, calories
a price
.
Nakonec Beverage
entita s má atributy name
, alcoholLevel
a price
.
↑ Kliknutím na logo zobrazíte náhled modelu v prohlížeči | Stáhněte si model jako soubor png
Problém 4:Hudební skupiny
Popis:
Hudební produkční společnost chce modelovat svět hudebních kapel. S jedním z jejích zástupců jsme se setkali a položili mu pár otázek. Přečtěte si rozhovor níže a najděte ty správné entity a jejich atributy pro model hudebních kapel.
Vertabelo: Jací lidé jsou ve světě hudby?
Zástupce: Mnoho, ale myslím, že jich potřebujeme jen pár. Kapely se skládají ze zpěváků a hudebníků. A samozřejmě jejich manažeři. U všech chceme jejich jméno a příjmení v systému. Zpěváci a hudebníci mají obvykle také přezdívku. Hudebníci hrají na určitý nástroj a zpěváci mají zvláštní typ hlasu, jako je soprán nebo tenor.
V: A co manažeři? Jak s nimi udržujete kontakt?
R: Záleží. Někteří preferují mobilní telefony pro rychlou komunikaci, jiní si rádi nechávají posílat e-maily, aby si vše mohli promyslet. Myslím, že zde potřebujeme oba druhy informací.
V: A všichni tito lidé…
R: …zakládat hudební skupiny, ano. Každá kapela má samozřejmě jméno. Většinou hrají různé druhy hudby, ale vždy je přiřadíme jen k jednomu stylu, jako je rock nebo metal. to je důležité. Potřebujeme vědět, jak dlouho spolu hráli, protože mladé kapely mají tendenci velmi rychle vznikat a mizet. Obvykle chceme vědět, kdy hráli svůj poslední koncert a jaká byla cena vstupenky.
V: Potřebujete ještě něco?
R: Potřebujeme uchovávat informace o skladbách. Páni, písničky jsou složité. Mají specifické druhy textů, určitý klíč, řadu použitých nástrojů... opravdu složité věci.
V:A je to pro vás všechno důležité?
R: No, ano, ale ve skutečnosti už máme systém pro písně, takže tady můžeme... no, myslím, že nám bude stačit jen název písně a délka. A možná datum vytvoření.
Otázka:
Vzhledem k písni, můžeme tento datový model použít k jejímu přiřazení k její kapele? Nebo něco chybí?
Řešení:
První entitou, kterou najdeme, je MusicBand
s atributy name
, mainStyle
, foundationDate
, lastShowDate
a lastShowPlace
.
Další entitou je Musician
, kde máme následující atributy:firstName
, lastName
, nickName
a instrument
.
Singer
entity sleduje podobný vzorec:jako atributy máme zpěvákovo firstName
, lastName
, nickName
a voiceLevel
.
Naší další entitou je Song
, který má následující atributy:name
, duration
a creationDate
.
Poslední entitou, kterou jsme identifikovali, je Manager
; má atributy firstName
, lastName
, emailAddress
a cellPhone
.
↑ Kliknutím na logo zobrazíte náhled modelu v prohlížeči | Stáhněte si model jako soubor png