sql >> Base de Datos >  >> RDS >> Database

Conjunto de problemas 2:identificación de entidades y atributos

En un artículo anterior sobre el modelado de datos, prometimos brindarle un conjunto de ejercicios para practicar la búsqueda de entidades y atributos. Aquí está la segunda entrega de nuestro conjunto de problemas. Disfruta.

Problema 1:Países

Descripción:

Encuentre las entidades adecuadas y sus atributos para representar a todos los países del mundo, sus regiones interiores (que pueden llamarse estados, provincias o regiones) y sus ciudades. Queremos representar el nombre de cada país, continente, fecha de independencia, tipo de gobierno y población. Para cada región (o provincia, estado, etc.) deseamos almacenar la ciudad capital, el nombre del gobernador y la población. Finalmente, para cada ciudad queremos tener el nombre, la fecha de fundación, la población y el número de escuelas por habitante. También nos gustaría representar lo que cada país llama sus regiones interiores.

Solución:

A partir de la descripción del problema del dominio, podemos identificar claramente 3 entidades:Country , Region y City .

Para el Country entidad encontramos los siguientes atributos:name , governmentType , population y independenceDay .

Para la Region entidad, descubrimos los atributos name , governorName , population y capitalCity .

Para City , tenemos name , foundationDate , population y schoolsPerHabitant .

El modelado de datos se realiza en etapas llamadas iteraciones. En este punto, iteramos. Volvemos al Country entidad y agregue un nuevo atributo. La última oración de la descripción nos pedía que representáramos el nombre de cada país para sus regiones interiores. Ese nombre debe estar a nivel de país, por lo que agregaremos un nuevo atributo llamado categoryRegion al Country entidad.

Pregunta:

La población está representada en el Country , Region y City niveles Crees que esto es correcto? ¿Hay información duplicada almacenada? ¿Cómo permites esto?


↑ Haga clic en el logotipo para obtener una vista previa del modelo en su navegador | Descarga el modelo como archivo png


Problema 2:Avión

Descripción:

Una nueva aerolínea económica quiere ingresar al mercado y necesita un sistema simple para administrar sus activos. Para ayudarnos a construir el sistema correcto, le pedimos a algunas personas que definieran la información clave para cualquier aerolínea nueva. Basándose en los comentarios a continuación, sugiera algunas entidades con atributos para un sistema de gestión de aviones.

Un piloto experimentado:

He trabajado en bastantes aerolíneas y he pasado miles de horas en el aire. Siempre me piden la misma información cuando cambio de empleador. Primero, quieren saber mi nombre, mi fecha de nacimiento:muchas aerolíneas solo emplean pilotos dentro de un cierto rango de edad. Y siempre necesitan verificar mi certificación:tengo un número de licencia especial que les ayuda a hacerlo. El número de horas de vuelo también es muy importante; les dice mucho sobre el piloto. ¡Qué suerte que tengo tanta experiencia! Y, por supuesto, siempre me dan un número de empleado, no sé por qué, pero se refieren a mí usando el número en lugar de mi apellido.

Representante de un fabricante de aeronaves:

Todas las aerolíneas necesitan aviones. La descripción completa de cualquier avión es muy compleja y podría seguir describiendo mis productos durante mucho tiempo, pero los empleados administrativos de las aerolíneas generalmente solo están interesados ​​​​en la información básica. Por supuesto, quieren saber cuántos pasajeros pueden volar en un avión:les ayuda a calcular los costos, los beneficios, etc. Y siempre preguntan sobre el rango de crucero para saber qué distancia puede volar cada avión. Por supuesto, necesitan el nombre del fabricante y el nombre del modelo para poner en sus libros. Ah, y por lo que escuché, siempre dan números internos especiales a cualquier avión que compran.

Un controlador de tránsito aéreo:

Hay algunos datos básicos que mantenemos sobre cada vuelo en nuestro aeropuerto. El vuelo debe tener un número determinado por razones de identificación (como FG 432). Necesitamos saber los aeropuertos de salida y llegada. Y el tiempo también es muy importante. Almacenamos no solo la hora de salida y llegada programada, sino también la hora real:los aviones pueden llegar tarde o incluso llegar antes de lo previsto.

Solución:

En nuestra descripción, identificamos claramente 3 entidades:Aircraft , Pilot y Flight . Luego encontramos los atributos de cada entidad.

Para la Aircraft entidad que tenemos manufacturer , model , passengerCapacity , cruisingRangeMiles y internalNumber .

Para el Pilot entidad descubrimos los siguientes atributos:employeeNumber , firstName , lastName , birthDate , licenseNumber y flownHours .

Finalmente, para Flight identificamos el flightNumber , departureAirport , destinationAirport , scheduledDepartureTime , scheduledArrivalTime , realDepartureTime y realArrivalTime .

Para simplificar este modelo de datos, asumimos que todos los vuelos están programados todos los días de la semana.


↑ Haga clic en el logotipo para obtener una vista previa del modelo en su navegador | Descarga el modelo como archivo png


En algunos casos, la descripción de nuestro dominio incluye atributos que debemos ignorar. Por ejemplo, decidimos excluir la duración del vuelo de este modelo de datos porque podemos calcularlo a partir de las horas reales de llegada y salida.

Problema 3:Guía de Restaurantes

Descripción:

Samuel quiere crear una guía de restaurantes en línea. Ya hay muchos sitios web de este tipo, pero quiere centrarse en los platos particulares disponibles en lugar de en el restaurante en sí. Está muy entusiasmado con su idea y así nos la describió:

Quiero describir restaurantes en detalle en mi sitio, así que necesito información básica como sus nombres y direcciones. La dirección debe ser precisa:no solo la calle y el número, sino también la ciudad, el estado y el país. Sí, país; ¡Quiero ser internacional! Además, quiero que cada uno de ellos tenga un estilo particular, como, ya sabes, chino, italiano o algo así. Cada uno de ellos se clasificará con un número determinado de estrellas.

Más importante aún, ¡quiero centrarme en la comida! Los restaurantes sirven miles de comidas y, para cada una de ellas, necesito el nombre y el tipo del plato:entrada, plato principal o postre. Hay varios aperitivos en varios países, por lo que también necesito almacenar información sobre los orígenes de los aperitivos. Y de platos principales… bueno, creo que sería bueno proporcionar la cantidad de calorías para las personas que están a dieta. Los postres también deberían contener este tipo de información.

¡Y quiero que se muestre CADA plato, junto con su precio actual! Oh, eso me recuerda:pongamos bebidas allí también. El nombre, el precio... y tal vez el nivel de alcohol, ahora que lo pienso.

Según la descripción anterior, sugiera algunas entidades y sus atributos para la guía de restaurantes en línea de Samuel.

Solución:

La primera entidad que tenemos es Restaurant con los atributos de name , addressStreet , addressNumber , city , state y country . Otros atributos en Restaurant son:stars y style .

Nuestra próxima idea podría ser crear una entidad llamada Meal y dale los atributos name , type y price . Sin embargo, si leemos la descripción completa del problema, encontraremos atributos específicos para postres, platos principales y entradas. Así que decidimos desechar Meal e ir con 3 entidades:Main_course , Appetizer y Dessert .

Para MainCourse , tendremos los siguientes atributos:name , category y price .

Para el Appetizer entidad, tenemos atributos llamados name , country y price .

Para Dessert encontramos los atributos name , calories y price .

Finalmente, la Beverage entidad con tiene los atributos name , alcoholLevel y price .


↑ Haga clic en el logotipo para obtener una vista previa del modelo en su navegador | Descarga el modelo como archivo png


Problema 4:Bandas de música

Descripción:

Una productora musical quiere modelar el mundo de las bandas de música. Nos reunimos con uno de sus representantes y le hicimos algunas preguntas. Lea la entrevista a continuación y encuentre las entidades correctas y sus atributos para un modelo de bandas de música.

Vertabelos: ¿Qué tipo de personas hay en el mundo de la música?

Representante: Muchos, pero creo que solo necesitamos unos pocos. Las bandas están formadas por cantantes y músicos. Y, por supuesto, sus directores. Para todos ellos, queremos su nombre y apellido en el sistema. Los cantantes y músicos también suelen tener un apodo. Los músicos tocan un determinado instrumento y los cantantes tienen un tipo de voz particular, como soprano o tenor.

V: ¿Qué pasa con los gerentes? ¿Cómo te mantienes en contacto con ellos?

R: Depende. Algunos de ellos prefieren los teléfonos celulares para una comunicación rápida, a otros les gusta que les envíen correos electrónicos para que puedan pensar en todo. Creo que necesitamos ambos tipos de información aquí.

V: Y todas estas personas...

R: …formar bandas de música, sí. Cada banda tiene un nombre, por supuesto. Suelen tocar varios tipos de música, pero siempre los asignamos a un solo estilo, como rock o metal. Eso es importante. Necesitamos saber cuánto tiempo han tocado juntos, porque las bandas jóvenes tienden a surgir y desaparecer muy rápidamente. Por lo general, queremos saber cuándo tocaron en su concierto más reciente y cuál fue el precio de la entrada.

V: ¿Necesitas algo más?

R: Necesitamos almacenar información sobre las canciones. Wow, las canciones son complicadas. Tienen tipos específicos de letras, una clave determinada, varios instrumentos involucrados... cosas realmente complicadas.

V:¿Y todo esto es importante para ti?

R: Bueno, sí, pero en realidad ya tenemos un sistema para las canciones, así que aquí podemos... bueno, creo que estaremos bien solo con el nombre de la canción y la duración. Y tal vez la fecha de creación.

Pregunta:

Dada una canción, ¿podemos usar este modelo de datos para relacionarla con su banda? ¿O falta algo?

Solución:

La primera entidad que encontramos es MusicBand con los atributos name , mainStyle , foundationDate , lastShowDate y lastShowPlace .

La siguiente entidad es Musician , donde tenemos los siguientes atributos:firstName , lastName , nickName y instrument .

El Singer entidad sigue un patrón similar:tenemos como atributos el firstName del cantante , lastName , nickName y voiceLevel .

Nuestra próxima entidad es Song , que tiene los siguientes atributos:name , duration y creationDate .

Finalmente, la última entidad que identificamos es Manager; tiene los atributos de firstName , lastName , emailAddress y cellPhone .


↑ Haga clic en el logotipo para obtener una vista previa del modelo en su navegador | Descarga el modelo como archivo png