We wcześniejszym artykule na temat modelowania danych obiecaliśmy dać zestaw ćwiczeń do przećwiczenia znajdowania jednostek i atrybutów. Oto druga część naszego zestawu problemów. Ciesz się.
Problem 1:Kraje
Opis:
Znajdź odpowiednie jednostki i ich atrybuty reprezentujące wszystkie kraje na świecie, ich regiony wewnętrzne (które można nazwać stanami, prowincjami lub regionami) oraz ich miasta. Chcemy reprezentować nazwę każdego kraju, kontynent, datę uzyskania niepodległości, typ rządu i populację. Dla każdego regionu (lub prowincji, stanu itp.) chcemy przechowywać stolicę, nazwisko gubernatora i ludność. Wreszcie, dla każdego miasta chcemy mieć nazwę, datę założenia, populację i liczbę szkół na mieszkańca. Chcielibyśmy również reprezentować to, co każdy kraj nazywa swoimi regionami wewnętrznymi.
Rozwiązanie:
Z opisu problemu domeny możemy jasno zidentyfikować 3 podmioty:Country
, Region
i City
.
Dla Country
encja znajdujemy następujące atrybuty:name
, governmentType
, population
i independenceDay
.
Dla Region
podmiot, odkrywamy atrybuty name
, governorName
, population
i capitalCity
.
Dla City
, mamy name
, foundationDate
, population
i schoolsPerHabitant
.
Modelowanie danych odbywa się etapami zwanymi iteracjami. W tym momencie wykonujemy iterację. Wracamy do Country
i dodaj nowy atrybut. Ostatnie zdanie opisu prosiło nas o przedstawienie nazwy każdego kraju dla jego wewnętrznych regionów. Ta nazwa powinna być na poziomie kraju, więc dodamy nowy atrybut o nazwie categoryRegion
do Country
podmiot.
Pytanie:
Populacja jest reprezentowana w Country
, Region
i City
poziomy. Czy uważasz, że to prawda? Czy przechowywane są zduplikowane informacje? Jak na to pozwalasz?
↑ Kliknij logo, aby wyświetlić podgląd modelu w przeglądarce | Pobierz model jako plik png
Problem 2:Samolot
Opis:
Nowa budżetowa linia lotnicza chce wejść na rynek i potrzebuje prostego systemu do zarządzania swoimi aktywami. Aby pomóc nam zbudować odpowiedni system, poprosiliśmy kilka osób o zdefiniowanie kluczowych informacji dla każdej nowej linii lotniczej. Na podstawie poniższych komentarzy zasugeruj kilka podmiotów z atrybutami dla systemu zarządzania samolotem.
Doświadczony pilot:
Pracowałem w kilku liniach lotniczych i spędziłem w powietrzu tysiące godzin. Zawsze proszą o te same informacje, kiedy zmieniam pracodawcę. Po pierwsze, chcą poznać moje imię, moje urodziny – wiele linii lotniczych zatrudnia tylko pilotów w określonym przedziale wiekowym. I zawsze muszą sprawdzić mój certyfikat – mam specjalny numer licencji, który im w tym pomaga. Bardzo ważna jest również liczba wylatanych godzin; wiele im to mówi o pilocie. Mam szczęście, że jestem tak doświadczony! I oczywiście zawsze dostaję numer pracownika – nie wiem dlaczego, ale odwołują się do mnie używając tego numeru zamiast mojego nazwiska.
Przedstawiciel producenta statku powietrznego:
Każda linia lotnicza potrzebuje samolotu. Cały opis każdego samolotu jest bardzo złożony i mógłbym dalej opisywać moje produkty przez wieki, ale pracownicy umysłowi z linii lotniczych są zazwyczaj zainteresowani tylko podstawowymi informacjami. Oczywiście chcą wiedzieć, ilu pasażerów może latać samolotem – pomaga im to obliczyć koszty, korzyści itp. I zawsze pytają o zasięg, aby wiedzieć, jak daleko może dolecieć każdy samolot. Oczywiście potrzebują nazwy producenta i nazwy modelu, aby umieścić ją w swoich książkach. Aha, i z tego, co słyszałem, zawsze dodają specjalne numery wewnętrzne do każdego zakupionego samolotu.
Kontroler ruchu lotniczego:
Istnieje kilka podstawowych faktów dotyczących każdego lotu na naszym lotnisku. Lot musi mieć określony numer ze względów identyfikacyjnych (np. FG 432). Musimy znać lotniska wylotu i przylotu. A czas też jest bardzo ważny. Przechowujemy nie tylko zaplanowany czas odlotu i przylotu, ale także czas rzeczywisty — samoloty mogą się spóźnić lub nawet przylecieć przed planem.
Rozwiązanie:
W naszym opisie wyraźnie identyfikujemy 3 podmioty:Aircraft
, Pilot
i Flight
. Następnie znajdujemy atrybuty każdej jednostki.
Dla Aircraft
podmiot mamy manufacturer
, model
, passengerCapacity
, cruisingRangeMiles
i internalNumber
.
Dla Pilot
podmiot odkrywamy następujące atrybuty:employeeNumber
, firstName
, lastName
, birthDate
, licenseNumber
i flownHours
.
Wreszcie, dla Flight
identyfikujemy flightNumber
, departureAirport
, destinationAirport
, scheduledDepartureTime
, scheduledArrivalTime
, realDepartureTime
i realArrivalTime
.
Aby uprościć ten model danych, zakładamy, że wszystkie loty są zaplanowane we wszystkie dni tygodnia.
↑ Kliknij logo, aby wyświetlić podgląd modelu w przeglądarce | Pobierz model jako plik png
W niektórych przypadkach nasz opis domeny zawiera atrybuty, które musimy zignorować. Na przykład postanowiliśmy wykluczyć czas trwania lotu z tego modelu danych, ponieważ możemy go obliczyć na podstawie rzeczywistych czasów przylotu i odlotu.
Problem 3:Przewodnik po restauracjach
Opis:
Samuel chce stworzyć internetowy przewodnik po restauracjach. Takich stron jest już wiele, ale on chce skupić się na konkretnych dostępnych daniach, a nie na samej restauracji. Jest bardzo entuzjastycznie nastawiony do swojego pomysłu i tak nam go opisał:
Chcę szczegółowo opisywać restauracje w mojej witrynie, więc potrzebuję podstawowych informacji, takich jak ich nazwy i adresy. Adres musi być dokładny:nie tylko ulica i numer, ale także miasto, województwo i kraj. Tak, kraj; Chcę wyjechać za granicę! Poza tym chcę, żeby każdemu z nich nadano określony styl, np. chiński, włoski czy coś w tym stylu. Każdy z nich otrzyma określoną liczbę gwiazdek.
Co ważniejsze, chcę skupić się na jedzeniu! Restauracje serwują tysiące dań, a do każdego z nich potrzebuję nazwy i rodzaju dania – przystawka, danie główne lub deser. W różnych krajach są różne przystawki, więc muszę również przechowywać informacje o ich pochodzeniu. A do dań głównych… cóż, myślę, że fajnie będzie podać liczbę kalorii dla osób na diecie. Desery również powinny zawierać tego rodzaju informacje.
I chcę, aby KAŻDE danie było pokazywane wraz z jego aktualną ceną! Och, to mi przypomina:postawmy tam też napoje. Nazwa, cena… a może poziom alkoholu, przychodzą na myśl.
Na podstawie powyższego opisu zasugeruj kilka podmiotów i ich atrybuty w internetowym przewodniku po restauracjach Samuela.
Rozwiązanie:
Pierwszym naszym podmiotem jest Restaurant
z atrybutami name
, addressStreet
, addressNumber
, city
, state
i country
. Inne atrybuty w Restaurant
są:stars
i style
.
Naszym następnym pomysłem może być stworzenie podmiotu o nazwie Meal
i nadaj mu atrybuty name
, type
i price
. Jeśli jednak przeczytamy pełny opis problemu, znajdziemy konkretne atrybuty dla deserów, dań głównych i przystawek. Dlatego postanawiamy złomować Meal
i przejdź z 3 podmiotami:Main_course
, Appetizer
i Dessert
.
Dla MainCourse
, będziemy mieć następujące atrybuty:name
, category
i price
.
Na Appetizer
podmiot, mamy atrybuty o nazwie name
, country
i price
.
Na Dessert
znajdujemy atrybuty name
, calories
i price
.
Wreszcie Beverage
jednostka z ma atrybuty name
, alcoholLevel
i price
.
↑ Kliknij logo, aby wyświetlić podgląd modelu w przeglądarce | Pobierz model jako plik png
Problem 4:Zespoły muzyczne
Opis:
Firma produkująca muzykę chce modelować świat zespołów muzycznych. Spotkaliśmy się z jednym z jej przedstawicieli i zadaliśmy mu kilka pytań. Przeczytaj poniższy wywiad i znajdź odpowiednie podmioty i ich atrybuty dla modelu zespołów muzycznych.
Pionowo: Jacy ludzie są w świecie muzyki?
Przedstawiciel: Wiele, ale myślę, że potrzebujemy tylko kilku. Zespoły składają się ze śpiewaków i muzyków. I oczywiście ich menedżerowie. Dla nich wszystkich chcemy mieć w systemie ich imiona i nazwiska. Śpiewacy i muzycy też zwykle mają pseudonim. Muzycy grają na określonym instrumencie, a śpiewacy mają określony typ głosu, na przykład sopran lub tenor.
W: A co z menedżerami? Jak utrzymujesz z nimi kontakt?
R: To zależy. Niektórzy z nich wolą telefony komórkowe do szybkiej komunikacji, inni lubią otrzymywać e-maile, aby mogli wszystko przemyśleć. Myślę, że potrzebujemy tutaj obu rodzajów informacji.
W: I wszyscy ci ludzie…
R: …tworzą zespoły muzyczne, tak. Każdy zespół ma oczywiście nazwę. Zwykle grają różne rodzaje muzyki, ale zawsze przypisujemy je tylko do jednego stylu, jak rock czy metal. To jest ważne. Musimy wiedzieć, jak długo razem grają, ponieważ młode zespoły mają tendencję do bardzo szybkiego pojawiania się i znikania. Zwykle chcemy wiedzieć, kiedy zagrali swój ostatni koncert i jaka była cena biletu.
W: Potrzebujesz czegoś jeszcze?
R: Musimy przechowywać informacje o utworach. Wow, piosenki są skomplikowane. Mają określone rodzaje tekstów, określoną tonację, wiele zaangażowanych instrumentów… naprawdę skomplikowane rzeczy.
V:A czy to wszystko jest dla Ciebie ważne?
R: Cóż, tak, ale właściwie mamy już system dla piosenek, więc tutaj możemy… cóż, myślę, że będziemy dobrzy z samą nazwą piosenki i czasem trwania. A może data utworzenia.
Pytanie:
Czy daną piosenkę możemy użyć tego modelu danych, aby dopasować ją do jej zespołu? A może czegoś brakuje?
Rozwiązanie:
Pierwszy znaleziony obiekt to MusicBand
z atrybutami name
, mainStyle
, foundationDate
, lastShowDate
i lastShowPlace
.
Następna jednostka to Musician
, gdzie mamy następujące atrybuty:firstName
, lastName
, nickName
i instrument
.
Singer
podmiot podąża za podobnym schematem:jako atrybuty mamy firstName
piosenkarza , lastName
, nickName
i voiceLevel
.
Naszym kolejnym bytem jest Song
, który ma następujące atrybuty:name
, duration
i creationDate
.
Wreszcie ostatnią zidentyfikowaną przez nas jednostką jest Manager
; ma atrybuty firstName
, lastName
, emailAddress
i cellPhone
.
↑ Kliknij logo, aby wyświetlić podgląd modelu w przeglądarce | Pobierz model jako plik png