Database
 sql >> Database >  >> RDS >> Database

Set di problemi 2 – Identificazione di entità e attributi

In un precedente articolo sulla modellazione dei dati abbiamo promesso di fornirvi una serie di esercizi per esercitarvi a trovare entità e attributi. Ecco la seconda puntata del nostro set di problemi. Divertiti.

Problema 1:Paesi

Descrizione:

Trova le entità giuste e i loro attributi per rappresentare tutti i paesi del mondo, le loro regioni interne (che possono essere chiamate stati, province o regioni) e le loro città. Vogliamo rappresentare il nome di ogni paese, il continente, la data di indipendenza, il tipo di governo e la popolazione. Per ogni regione (o provincia, stato, ecc.) desideriamo memorizzare la capitale, il nome del governatore e la popolazione. Infine, per ogni città vogliamo avere il nome, la data di fondazione, la popolazione e il numero di scuole per abitante. Vorremmo anche rappresentare quelle che ogni paese chiama le sue regioni interne.

Soluzione:

Dalla descrizione del problema del dominio, possiamo identificare chiaramente 3 entità:Country , Region e City .

Per il Country entità troviamo i seguenti attributi:name , governmentType , population e independenceDay .

Per la Region entità, scopriamo gli attributi name , governorName , population e capitalCity .

Per City , abbiamo name , foundationDate , population e schoolsPerHabitant .

La modellazione dei dati viene eseguita in fasi chiamate iterazioni. A questo punto ripetiamo. Torniamo al Country entità e aggiungere un nuovo attributo. L'ultima frase della descrizione ci chiedeva di rappresentare il nome di ogni paese per le sue regioni interne. Quel nome dovrebbe essere a livello di paese, quindi aggiungeremo un nuovo attributo chiamato categoryRegion al Country entità.

Domanda:

La popolazione è rappresentata nel Country , Region e City livelli. Pensi che questo sia corretto? Vengono archiviate informazioni duplicate? Come lo consenti?


↑ Fai clic sul logo per visualizzare in anteprima il modello nel tuo browser | Scarica il modello come file png


Problema 2:aereo

Descrizione:

Una nuova compagnia aerea low cost vuole entrare nel mercato e ha bisogno di un sistema semplice per gestire i propri asset. Per aiutarci a costruire il sistema giusto, abbiamo chiesto ad alcune persone di definire le informazioni chiave per qualsiasi nuova compagnia aerea. Sulla base dei commenti seguenti, suggerisci alcune entità con attributi per un sistema di gestione dell'aeroplano.

Un pilota esperto:

Ho lavorato presso diverse compagnie aeree e ho trascorso migliaia di ore in volo. Mi chiedono sempre le stesse informazioni quando cambio datore di lavoro. In primo luogo, vogliono sapere il mio nome, il mio compleanno:molte compagnie aeree impiegano solo piloti entro una certa fascia di età. E devono sempre controllare la mia certificazione:ho un numero di licenza speciale che li aiuta a farlo. Anche il numero di ore di volo è molto importante; dice loro molto sul pilota. Per fortuna sono così esperto! E, ovviamente, mi viene sempre assegnato un numero di dipendente, non so perché, ma mi riferiscono utilizzando il numero anziché il cognome.

Rappresentante di un costruttore di aeromobili:

Ogni compagnia aerea ha bisogno di un aereo. L'intera descrizione di qualsiasi aeroplano è molto complessa e potrei continuare a descrivere i miei prodotti per anni, ma i colletti bianchi delle compagnie aeree di solito sono interessati solo alle informazioni di base. Naturalmente, vogliono sapere quanti passeggeri possono volare su un aereo - li aiuta a calcolare i costi, i benefici, ecc. E chiedono sempre informazioni sull'autonomia di crociera in modo da sapere fino a che punto può volare ciascun aereo. Naturalmente, hanno bisogno del nome del produttore e del nome del modello da inserire nei loro libri. Oh, e da quello che ho sentito, danno sempre numeri interni speciali a qualsiasi aereo che acquistano.

Un controllore del traffico aereo:

Ci sono alcuni fatti di base che conserviamo su ogni volo nel nostro aeroporto. Il volo deve avere un certo numero per motivi di identificazione, (come FG 432). Abbiamo bisogno di conoscere gli aeroporti di partenza e di arrivo. E anche il tempo è molto importante. Memorizziamo non solo l'orario di partenza e di arrivo programmato, ma anche i tempi reali:gli aerei possono essere in ritardo o addirittura arrivare prima del previsto.

Soluzione:

Nella nostra descrizione, identifichiamo chiaramente 3 entità:Aircraft , Pilot e Flight . Quindi troviamo gli attributi di ciascuna entità.

Per il Aircraft entità abbiamo manufacturer , model , passengerCapacity , cruisingRangeMiles e internalNumber .

Per il Pilot entità scopriamo i seguenti attributi:employeeNumber , firstName , lastName , birthDate , licenseNumber e flownHours .

Infine, per Flight identifichiamo il flightNumber , departureAirport , destinationAirport , scheduledDepartureTime , scheduledArrivalTime , realDepartureTime e realArrivalTime .

Per semplificare questo modello di dati, assumiamo che tutti i voli siano programmati in tutti i giorni della settimana.


↑ Fai clic sul logo per visualizzare in anteprima il modello nel tuo browser | Scarica il modello come file png


In alcuni casi, la nostra descrizione del dominio include attributi che dobbiamo ignorare. Ad esempio, abbiamo deciso di escludere la durata del volo da questo modello di dati perché possiamo calcolarlo dagli orari di arrivo e di partenza reali.

Problema 3:Guida ai ristoranti

Descrizione:

Samuel vuole creare una guida ai ristoranti online. Esistono già molti siti Web di questo tipo, ma vuole concentrarsi sui piatti particolari disponibili piuttosto che sul ristorante stesso. È davvero entusiasta della sua idea ed è così che ce l'ha descritta:

Voglio descrivere i ristoranti in dettaglio sul mio sito, quindi ho bisogno di elementi di base come i loro nomi e indirizzi. L'indirizzo deve essere preciso:non solo la via e il numero, ma anche la città, la provincia e il paese. Sì, paese; Voglio diventare internazionale! Inoltre, voglio che a ciascuno di loro venga assegnato uno stile particolare, come, sai, cinese, italiano o qualcosa del genere. Ognuno di loro sarà classificato con un certo numero di stelle.

Soprattutto, voglio concentrarmi sul cibo! I ristoranti servono migliaia di pasti e per ognuno di essi ho bisogno del nome e del tipo del piatto:antipasto, piatto principale o dessert. Ci sono vari antipasti in vari paesi, quindi ho bisogno di memorizzare anche informazioni sulle origini degli antipasti. E per i secondi... beh, penso che sarà bello fornire il numero di calorie per le persone che seguono una dieta. Anche i dessert dovrebbero contenere questo tipo di informazioni.

E voglio che venga mostrato OGNI piatto, insieme al suo prezzo attuale! Oh, questo mi ricorda:mettiamo anche le bevande lì. Il nome, il prezzo... e forse il livello di alcol, a pensarci bene.

Sulla base della descrizione precedente, suggerisci alcune entità e i loro attributi per la guida ai ristoranti online di Samuel.

Soluzione:

La prima entità che abbiamo è Restaurant con gli attributi di name , addressStreet , addressNumber , city , state e country . Altri attributi in Restaurant sono:stars e style .

La nostra prossima idea potrebbe essere quella di creare un'entità chiamata Meal e assegnagli gli attributi name , type e price . Tuttavia, se leggiamo la descrizione completa del problema, troveremo attributi specifici per dessert, secondi e antipasti. Quindi decidiamo di eliminare Meal e vai con 3 entità:Main_course , Appetizer e Dessert .

Per MainCourse , avremo i seguenti attributi:name , category e price .

Per l'Appetizer entità, abbiamo attributi chiamati name , country e price .

Per Dessert troviamo gli attributi name , calories e price .

Infine, la Beverage l'entità con ha gli attributi name , alcoholLevel e price .


↑ Fai clic sul logo per visualizzare in anteprima il modello nel tuo browser | Scarica il modello come file png


Problema 4:Gruppi musicali

Descrizione:

Una società di produzione musicale vuole modellare il mondo dei gruppi musicali. Abbiamo incontrato uno dei suoi rappresentanti e gli abbiamo fatto alcune domande. Leggi l'intervista qui sotto e trova le entità giuste e i loro attributi per un modello di gruppi musicali.

Verticale: Che tipo di persone ci sono nel mondo della musica?

Rappresentante: Molti, ma penso che ne bastino pochi. Le band sono composte da cantanti e musicisti. E, naturalmente, i loro manager. Per tutti, vogliamo il loro nome e cognome nel sistema. Anche cantanti e musicisti di solito hanno un soprannome. I musicisti suonano un certo strumento e i cantanti hanno un tipo di voce particolare, come soprano o tenore.

V: E i gestori? Come ti tieni in contatto con loro?

R: Dipende. Alcuni di loro preferiscono i telefoni cellulari per comunicazioni rapide, ad altri piace ricevere e-mail in modo che possano pensare a tutto. Penso che qui abbiamo bisogno di entrambi i tipi di informazioni.

V: E tutte queste persone...

R: …formare gruppi musicali, sì. Ogni band ha un nome, ovviamente. Di solito suonano vari tipi di musica, ma li assegniamo sempre a un solo stile, come il rock o il metal. È importante. Dobbiamo sapere da quanto tempo suonano insieme, perché le giovani band hanno la tendenza a emergere e scomparire molto rapidamente. Di solito vogliamo sapere quando hanno suonato il loro concerto più recente e qual era il prezzo del biglietto.

V: Ti serve altro?

R: Abbiamo bisogno di memorizzare informazioni sulle canzoni. Wow, le canzoni sono complicate. Hanno specifici tipi di testi, una certa tonalità, un certo numero di strumenti coinvolti... roba davvero complicata.

V:E tutto questo è importante per te?

R: Bene, sì, ma in realtà abbiamo già un sistema per le canzoni, quindi qui possiamo... beh, penso che andremo bene solo con il nome e la durata della canzone. E forse la data di creazione.

Domanda:

Data una canzone, possiamo usare questo modello di dati per abbinarlo alla sua band? O manca qualcosa?

Soluzione:

La prima entità che troviamo è MusicBand con gli attributi name , mainStyle , foundationDate , lastShowDate e lastShowPlace .

L'entità successiva è Musician , dove abbiamo i seguenti attributi:firstName , lastName , nickName e instrument .

Il Singer l'entità persegue uno schema simile:abbiamo come attributi il ​​firstName del cantante , lastName , nickName e voiceLevel .

La nostra prossima entità è Song , che ha i seguenti attributi:name , duration e creationDate .

Infine, l'ultima entità che abbiamo identificato è Manager; ha gli attributi di firstName , lastName , emailAddress e cellPhone .


↑ Fai clic sul logo per visualizzare in anteprima il modello nel tuo browser | Scarica il modello come file png