Cómo hacer un modelo conceptual - linaSalinas/Wiki_Modelado GitHub Wiki
Planteamiento y especificación del ejemplo.
El modelo conceptual cuando estamos desarrollando una base de datos es muy importante, es el momento en el que identificamos los elementos importantes que contendrá nuestra base de datos. Con la finalidad mostrar detalladamente como funciona hemos elegido un ejemplo para ilustrar el paso a paso que se debe seguir al momento de diseñar el modelo conceptual.
La pizzería Tío Sam es un negocio familiar que requiere de una aplicación y una base de datos para soportar los procesos de compra/venta y despacho de pizzas, además quiere llevar un control de los pedidos y conocer cuales son las combinaciones de preferidas de sus clientes. A la fecha, toda la información se guarda manualmente en una libreta de pedidos y luego se contabiliza usando Excel. El menú del restaurante es sencillo. Los clientes pueden comprar uno de los 10 sabores de pizza (e.g. pepperoni, hawaiana, vegetariana, etc.) en uno de los tres posibles tamaños (personal, mediana y grande). El dueño de la pizzería es ecologista por tanto sólo incluye en el menú jugos naturales (de frutas, en agua o leche, por vaso o jarra y endulzados con panela o stevia). También se sirve agua (sin costo alguno) para los clientes que no quieren tomar jugo. En la pizzería Tío Sam, las pizzas pueden servirse para (1) ser consumidas en el restaurante, (2) para llevar, o (3) para ser despachadas a domicilio. Cuando se realiza una venta, se debe registrar el tipo de servicio. Las pizzas tienen un precio base, pero su precio de venta varía dependiendo del tipo de servicio así: (1) se suman $5.000 si se sirve en el restaurante; (2) se suman $2.000 por el empaque si es para llevar; y (3) se suman $7.000 por los empaques más el servicio de domicilio.
Ahora bien, el dueño de la pizzería quiere registrar los clientes que hacen pedidos, de este registro es necesario tomar la hora en la que se realiza. La idea es registrar los datos de un cliente cuando hace un pedido a domicilio por primera vez. De esta forma, cuando el cliente vuelve a llamar solo hay que preguntarle su número telefónico. A partir del número telefónico se recuperan los datos necesarios para hacer el domicilio y se continúa registrando el pedido. Además, el dueño quiere llevar el control del empleado que se encarga de dicho registro.
También se quiere crear un programa de fidelización de los clientes, se llama la tarjeta sobrinos del Tío Sam. Los clientes que tienen esta tarjeta la presentan cada que hacen una compra para ganar puntos y reclamar premios. La idea del dueño de Tío Sam es que la tarjeta quede asociada un número telefónico. De esta forma, todos los miembros de una familia pueden acumular los puntos cuando el pedido se hace por domicilio.
Para el dueño de la pizzería es importante saber la fecha del pedido y quién de sus empleados lo toma. Cada uno de sus empleados tiene un código único que lo identifica dentro de la empresa y se guardan sus datos personales, como nombre, documento de identidad, email, teléfono y fecha de cumpleaños. Por otro lado, el dueño ha establecido diferentes roles dentro de sus trabajadores, donde hay un trabajador jefe encargado de un grupo de a los sumo 8 trabajadores, esto le ha permitido mantener el orden dentro de la pizzería.
Cada tarjeta tiene asociados un grupo de sobrinos que pueden ganar puntos con sus compras y a quienes ``El Tío Sam'' recompensa en el día de su cumpleaños con una pizza personal y una tarjeta de felicitación personalizada (con nombre propio y personaje favorito).
A continuación explicaremos el paso a paso de como construir el modelo conceptual para este ejemplo:
1. Leer detalladamente el enunciado del problema.
2. Especificar el objetivo de la aplicación (esto con el fin de contextualizarnos sobre el qué, para qué, por qué entre otros de lo que desarrollaremos) Esto nos ayudará a mantener el camino y resolver dudas que nos puedan generar en un futuro, pues con el objetivo claro estableceremos si lo que estamos construyendo va acorde con dicho objetivo. recuerde que estamos modelando la base de datos para tal aplicativo, no estamos modelando el aplicativo, por esto es importante tener en cuenta cual es la información importante que debemos guardar Para este ejemplo el objetivo es: llevar la contabilidad de la pizzería y guardar la información de sus clientes, de los pedidos que ellos realizan y de sus empleados.
3. Identificar todos los sustantivos que contenga el enunciado y listarlos (esto se puede realizar en una tabla) Esto nos servirá para identificar entidades, atributos y relaciones. Pero nuestro objetivo principal en este punto es identificar las entidades. Aquí tenemos algunos de los sustantivos identificados
Pizzeria | Pizza | Libreta de pedidos |
---|---|---|
Menú | Restaurante | Cliente |
Sabor | Tamaño | Dueño |
Jugo Natural | Precio | Empleado |
Cuando listamos los sustantivos debemos plantearnos una serie de preguntas que nos ayudarán a descubrir cuáles de ellos son entidades.
Si recordamos la definición, entidad es una representación de un objeto que guarda información, por ello nos planteamos las siguientes preguntas.
¿Este sustantivo guarda información? si guarda información es probable que sea una entidad. CUIDADO no todo lo que guarda información es una entidad, también es posible que sea una relación. ¿Este sustantivo pertenece a otro? si pertenece a otro es un atributo
Para entenderlo mejor, usemos el primer sustantivo y respondamos las preguntas.
Pizzería
. Si observamos detalladamente en el enunciado la pizzería no es un elemento que guarde información y tampoco hay otro elemento que guarde información de la pizzería, entonces esta no es una entidad.
Pizza
. En este caso según el enunciado la pizza tiene características como sabor y tamaño (en este caso serían atributos) por ello podemos decir que Pizza es una entidad.
Tamaño
. Como se ha mencionado anteriormente este sustantivo en un atributo, pero si revisamos en el enunciado nos encontramos que se pueden elegir diferentes tipos de tamaño (personal, mediana y grande) cuando esto sucede se dice que el atributo es un dominio, ya que de él se pueden escoger varias opciones previamente establecidas.
RECOMENDACIÓN
Explica cada uno de los sustantivos, porque lo consideras entidad y porque no.
4. Listar las entidades. Ahora ya debemos tener claro cuales son las entidades, así que vamos a hacer más visible el trabajo realizado. A continuación las entidades identificadas del ejemplo:
- Pizza
- Cliente
- Jugo
- Empleado
- Tarjeta
- Pedido
- Sobrino
5. Macer una matriz y encontrar verbos que unen las entidades. Esto nos ayudará a encontrar las relaciones entre las entidades. También, haz la relación usando palabras que me indiquen cantidades, como por ejemplo “un pedido tiene una o más pizzas” y en sentido contrario; “una pizza puede estar en uno o más pedidos”. Nótese que el primero siempre está en singular, pues las relaciones siempre se leen así. A continuación la matriz con las respectivas relaciones del ejemplo. Para entender mejor la matriz, lea por filas.
Entidades | Pizza | Cliente | Jugo | Empleado | Tarjeta | Pedido | Sobrino |
---|---|---|---|---|---|---|---|
Pizza | pertenece a un | ||||||
Cliente | realiza uno o más | ||||||
Jugo | pertenece a un | ||||||
Empleado | tiene a cargo uno o más | toma uno o más | |||||
Empleado | está a cargo de un | ||||||
Tarjeta | los puntos son registrados por uno o más | tiene asociado uno o más | |||||
Pedido | tiene una o más | es realizado por un | tiene uno o más | es tomado por un | registra los puntos en una | ||
Sobrino | esta asociado a una |
Aclaraciones
- Si bien es cierto que el cliente selecciona las pizzas y el jugo, no son relaciones directas entre estas entidades, pues una interpretación correcta de esto es que el cliente realiza el pedido y el pedido es el que relaciona las pizzas y el jugo.
- Los puntos en la tarjeta se suman a partir de los pedidos realizados a domicilio, por esto la relación de la tarjeta es con pedido y no es directa con el cliente. Además, los puntos de la tarjeta se suman si el pedido lo realiza algún familiar del cliente, no necesariamente el cliente, solo necesita el mismo número de teléfono.
- Note que una entidad puede tener relación con ella misma.
6. Asignar atributos. Ahora solo queda asignar los atributos que tiene cada entidad e identificar cual de estos es su llave primaria. Recuerde que la llave primaria es el identificador de la identidad, cada representación de la entidad debe tener uno diferente, en otras palabras, la llave principal es como la cédula de las entidades, en el siguiente cuadro las llaves están subrayadas.
Pizza | Cliente | Jugo | Empleado | Tarjeta | Pedido | Sobrino |
---|---|---|---|---|---|---|
Sabor | Teléfono | Sabor | Código | Teléfono | Fecha | Cumpleaños |
Tamaño | Dirección | Embase | ID | Puntos | Tipo de servicio | Nombre |
Código | Endulce | Código | Personaje | |||
Código | Teléfono | |||||
Cumpleaños | ||||||
Rol |
REALIZA
es una relación, pero tiene el atributo hora
Nota
Muchas veces el enunciado no nos indica que la entidad tiene un código único, pero podemos identificar que la entidad necesita uno. También es cierto que hay ocasiones en las que una entidad no tiene llave primaria; estas son las entidades débiles, en este caso es sobrino es una entidad débil, pues no la necesita debido a que los sobrinos solo existen si existe la tarjeta, y en el sistema no es importante tener una lista con todos los sobrinos y hacer búsqueda individual de ellos; como si sería importante hacer esta búsqueda con los clientes. Si aún no queda claro la entidad débil vamos con la siguiente sección en la cual será más sencillo entenderlo.
7. Identificar dominios. Es posible que sea necesario definir algunos dominios para ciertos atributos. Esto ocurre cuando hay opciones especificar para un atributo. En este caso tenemos:
Rol Empleado | Tipo de Servicio |
---|---|
Jefe | Restaurante |
Compañero | Llevar |
Domicilio |