Database
 sql >> Base de Dados >  >> RDS >> Database

Conjunto de Problemas 2 - Identificando Entidades e Atributos




Em um artigo anterior sobre modelagem de dados, prometemos fornecer a você um conjunto de exercícios para praticar a localização de entidades e atributos. Aqui está a segunda parcela do nosso conjunto de problemas. Aproveitar.

Problema 1:Países

Descrição:


Encontre as entidades certas e seus atributos para representar todos os países do mundo, suas regiões do interior (que podem ser chamadas de estados, províncias ou regiões) e suas cidades. Queremos representar o nome de cada país, continente, data de independência, tipo de governo e população. Para cada região (ou província, estado, etc.) desejamos armazenar a capital, o nome do governador e a população. Por fim, para cada cidade queremos ter o nome, a data de fundação, a população e o número de escolas por habitante. Gostaríamos também de representar o que cada país chama de suas regiões do interior.

Solução:


A partir da descrição do problema do domínio, podemos identificar claramente 3 entidades:Country , Region e City .

Para o Country entidade encontramos os seguintes atributos:name , governmentType , population e independenceDay .

Para a Region entidade, descobrimos os atributos name , governorName , population e capitalCity .

Para City , temos name , foundationDate , population e schoolsPerHabitant .

A modelagem de dados é feita em etapas chamadas iterações. Neste ponto, iteramos. Voltamos ao Country entidade e adicione um novo atributo. A última frase da descrição nos pedia para representar o nome de cada país para suas regiões do interior. Esse nome deve estar no nível do país, então adicionaremos um novo atributo chamado categoryRegion para o Country entidade.

Pergunta:


A população é representada no Country , Region e City níveis. Você acha que isso é correto? Há informações duplicadas sendo armazenadas? Como você permite isso?


↑ Clique no logotipo para visualizar o modelo em seu navegador | Baixe o modelo como um arquivo png

Problema 2:Aeronave

Descrição:


Uma nova companhia aérea de baixo custo quer entrar no mercado e precisa de um sistema simples para gerenciar seus ativos. Para nos ajudar a construir o sistema certo, pedimos a algumas pessoas que definissem informações importantes para qualquer nova companhia aérea. Com base nos comentários abaixo, sugira algumas entidades com atributos para um sistema de gerenciamento de aeronaves.
Um piloto experiente:

Eu trabalhei em algumas companhias aéreas e passei milhares de horas no ar. Sempre pedem a mesma informação quando mudo de empregador. Primeiro, eles querem saber meu nome, meu aniversário – muitas companhias aéreas só empregam pilotos dentro de uma determinada faixa etária. E eles sempre precisam verificar minha certificação – eu tenho um número de licença especial que os ajuda a fazer isso. O número de horas voadas também é muito importante; diz-lhes muito sobre o piloto. Sorte minha que sou tão experiente! E, claro, sempre recebo um número de funcionário – não sei por que, mas eles se referem a mim usando o número em vez do meu sobrenome.
Representante de um fabricante de aeronaves:

Toda companhia aérea precisa de aeronaves. Toda a descrição de qualquer avião é muito complexa e eu poderia continuar descrevendo meus produtos por muito tempo, mas os caras de colarinho branco das companhias aéreas geralmente estão interessados ​​apenas nas informações básicas. Claro, eles querem saber quantos passageiros podem voar em um avião – ajuda-os a calcular os custos, benefícios etc. E eles sempre perguntam sobre o alcance de cruzeiro para saber até onde cada avião pode voar. Claro, eles precisam do nome do fabricante e do nome do modelo para colocar em seus livros. Ah, e pelo que ouvi, eles sempre dão números internos especiais para qualquer aeronave que compram.
Um controlador de tráfego aéreo:

Existem alguns fatos básicos que mantemos sobre cada voo em nosso aeroporto. O voo deve ter um determinado número por motivos de identificação (como FG 432). Precisamos saber os aeroportos de partida e chegada. E o tempo também é muito importante. Armazenamos não apenas os horários programados de partida e chegada, mas também os horários reais – os aviões podem se atrasar ou até chegar antes do previsto.

Solução:


Em nossa descrição, identificamos claramente 3 entidades:Aircraft , Pilot e Flight . Então encontramos os atributos de cada entidade.

Para a Aircraft entidade temos manufacturer , model , passengerCapacity , cruisingRangeMiles e internalNumber .

Para o Pilot entidade, descobrimos os seguintes atributos:employeeNumber , firstName , lastName , birthDate , licenseNumber e flownHours .

Por fim, para Flight identificamos o flightNumber , departureAirport , destinationAirport , scheduledDepartureTime , scheduledArrivalTime , realDepartureTime e realArrivalTime .

Para simplificar esse modelo de dados, assumimos que todos os voos são programados em todos os dias da semana.


↑ Clique no logotipo para visualizar o modelo em seu navegador | Baixe o modelo como um arquivo png


Em alguns casos, nossa descrição de domínio inclui atributos que devemos ignorar. Por exemplo, decidimos excluir a duração do voo deste modelo de dados porque podemos calculá-lo a partir dos tempos reais de chegada e partida.

Problema 3:Guia de restaurantes

Descrição:


Samuel quer criar um guia de restaurantes online. Já existem muitos sites desse tipo, mas ele quer se concentrar nos pratos específicos disponíveis, e não no restaurante em si. Ele está realmente entusiasmado com sua ideia e é assim que ele a descreveu para nós:

Quero descrever os restaurantes em detalhes no meu site, então preciso do básico, como seus nomes e endereços. O endereço deve ser preciso:não só a rua e o número, mas também a cidade, estado e país. Sim, país; Eu quero ir internacional! Além disso, quero que cada um deles receba um estilo particular, como, você sabe, chinês, italiano ou algo assim. Cada um deles será classificado com um certo número de estrelas.

Mais importante, quero focar na comida! Os restaurantes servem milhares de refeições e, para cada uma delas, preciso do nome e do tipo do prato – entrada, prato principal ou sobremesa. Existem vários aperitivos em vários países, então preciso armazenar informações sobre as origens dos aperitivos também. E para os pratos principais… bem, acho que seria bom fornecer o número de calorias para pessoas em dietas. As sobremesas também devem conter esse tipo de informação.

E eu quero que CADA prato seja mostrado, junto com seu preço atual! Ah, isso me lembra:vamos colocar bebidas lá também. O nome, o preço... e talvez o nível de álcool, pense bem.

Com base na descrição acima, sugira algumas entidades e seus atributos para o guia de restaurantes online de Samuel.

Solução:


A primeira entidade que temos é o Restaurant com os atributos de name , addressStreet , addressNumber , city , state e country . Outros atributos em Restaurant são:stars e style .

Nossa próxima ideia pode ser criar uma entidade chamada Meal e dê a ele os atributos name , type e price . No entanto, se lermos a descrição completa do problema, encontraremos atributos específicos para sobremesas, pratos principais e aperitivos. Então decidimos descartar Meal e vá com 3 entidades:Main_course , Appetizer e Dessert .

Para MainCourse , teremos os seguintes atributos:name , category e price .

Para o Appetizer entidade, temos atributos chamados name , country e price .

Para Dessert encontramos os atributos name , calories e price .

Por fim, a Beverage entidade com tem os atributos name , alcoholLevel e price .


↑ Clique no logotipo para visualizar o modelo em seu navegador | Baixe o modelo como um arquivo png

Problema 4:Bandas de música

Descrição:


Uma empresa de produção musical quer modelar o mundo das bandas de música. Reunimo-nos com um dos seus representantes e fizemos-lhe algumas perguntas. Leia a entrevista abaixo e encontre as entidades certas e seus atributos para um modelo de bandas de música.

Vertabelo: Que tipo de pessoas existem no mundo da música?

Representante: Muitos, mas acho que só precisamos de alguns. As bandas são compostas por cantores e músicos. E, claro, seus gerentes. Para todos eles, queremos seus nomes e sobrenomes no sistema. Cantores e músicos costumam ter um apelido também. Os músicos tocam um determinado instrumento e os cantores têm um tipo de voz específico, como soprano ou tenor.

V: E os gerentes? Como você mantém contato com eles?

R: Depende. Alguns deles preferem telefones celulares para comunicação rápida, outros gostam de receber e-mails para que possam pensar em tudo. Acho que precisamos dos dois tipos de informação aqui.

V: E todas essas pessoas…

R: …formar bandas de música, sim. Cada banda tem um nome, é claro. Eles geralmente tocam vários tipos de música, mas sempre os atribuímos a apenas um estilo, como rock ou metal. Isso é importante. Precisamos saber há quanto tempo eles tocam juntos, porque bandas jovens tendem a surgir e desaparecer muito rapidamente. Geralmente, queremos saber quando eles tocaram o show mais recente e qual foi o preço do ingresso.

V: Precisa de mais alguma coisa?

R: Precisamos armazenar informações sobre as músicas. Uau, as músicas são complicadas. Eles têm tipos específicos de letras, um certo tom, vários instrumentos envolvidos... coisas realmente complicadas.

V:E tudo isso é importante para você?

R: Bem, sim, mas na verdade já temos um sistema para músicas, então aqui podemos... bem, acho que ficaremos bem apenas com o nome e a duração da música. E talvez a data de criação.

Pergunta:


Dada uma música, podemos usar esse modelo de dados para combiná-la com sua banda? Ou está faltando algo?

Solução:


A primeira entidade que encontramos é MusicBand com os atributos name , mainStyle , foundationDate , lastShowDate e lastShowPlace .

A próxima entidade é Musician , onde temos os seguintes atributos:firstName , lastName , nickName e instrument .

O Singer entidade segue um padrão semelhante:temos como atributos o firstName do cantor , lastName , nickName e voiceLevel .

Nossa próxima entidade é Song , que tem os seguintes atributos:name , duration e creationDate .

Por fim, a última entidade que identificamos é Manager; tem os atributos de firstName , lastName , emailAddress e cellPhone .


↑ Clique no logotipo para visualizar o modelo em seu navegador | Baixe o modelo como um arquivo png