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

Cómo crear un modelo de base de datos desde cero

¿Quiere crear su primer modelo de base de datos pero no sabe cómo empezar? ¡Sigue leyendo!

Supongo que ya sabe un poco sobre tablas, columnas y relaciones. Si no lo hace, mire nuestros tutoriales en video antes de continuar.

Comience con una descripción del sistema

Siempre debe comenzar a crear un modelo de base de datos con una descripción de un sistema En una situación de salón de clases, un maestro le da una descripción del sistema. En la vida real, preparar una descripción es un proceso en su propio derecho. Asumiré que tienes la descripción. No importa si te lo dio tu cliente, tu jefe, tu maestro o si lo escribiste tú mismo.

Eche un vistazo a la descripción y resalte todos los sustantivos . Los sustantivos en la descripción se pueden dividir aproximadamente en tres categorías:tablas, atributos y ejemplos.

  • Mesas representan entidades primarias en el sistema:personas, objetos físicos, eventos, transacciones, etc.
  • Atributos son propiedades asociadas con una entidad primaria. Describen las características de su entidad. En el modelo de la base de datos, serán las columnas en tus tablas.
  • Ejemplos son solo eso, ejemplos. Le ayudan a comprender los tipos de datos de ciertos atributos y te ayudan a entender la relación entre diferentes entidades.

Comenzar con una descripción tiene la ventaja de obligarlo a usar el mismo glosario como sus usuarios. Si crea un sistema para una escuela primaria, debe hablar sobre los alumnos. Si creas un sistema similar para una universidad, deberías hablar de estudiantes.

Tablas, Relaciones, Columnas

  1. Una vez que sus sustantivos estén resaltados, identifique las tablas . No tienes que modelar todo a la vez. Concéntrese primero en la funcionalidad principal del sistema.
  2. Cuando tenga las tablas, descubra las relaciones entre las mesas. Este paso podría conducir a la introducción de nuevas tablas intermedias (unión).
  3. Finalmente agregue las columnas a las mesas.

En este punto, debe leer la descripción nuevamente y ver si falta algo. Te aseguro que habrá algo que añadir. Agregue las nuevas tablas, las nuevas relaciones y las nuevas columnas. Lea la descripción de nuevo...

Cosas a tener en cuenta

Crear un modelo de base de datos es un iterativo proceso. No intentes modelar todo a la vez. Comience con las entidades centrales de su sistema. Puede agregar más detalles más adelante.

Está bien hacer preguntas . Por muy precisa que sea la descripción, siempre tendrás algunas dudas. Algo siempre estará subespecificado. Haga preguntas sobre las cosas de las que no está seguro. Si no puede hacer preguntas, haga una suposición razonable y anótela.

Siempre hay más de una manera para modelar cada sistema. Algunos modelos son claramente malos, pero con la mayoría de los demás es difícil juzgar si son correctos o incorrectos. El modelo depende de cuál es el propósito del sistema, cómo llegan los datos al sistema, incluso del gusto personal del diseñador. A medida que adquiera experiencia, tendrá más confianza en sus decisiones de diseño.

Ejemplo:Sistema de alquiler de coches

Como ejemplo, crearemos un modelo de base de datos para un sistema de alquiler de coches. Primero, eche un vistazo a la descripción del sistema:

Una empresa de alquiler de coches alquila coches a los clientes. La compañía posee varios automóviles. Cada automóvil tiene una marca, un nombre de modelo, un año de producción, un kilometraje, un color, etc. Los autos se dividen en diferentes categorías:pequeños, medianos, grandes, limusinas.

La empresa tiene muchas ubicaciones donde puedes alquilar un coche. Las ubicaciones de alquiler están ubicadas en diferentes ciudades del país. Puede haber más de una ubicación de empresa en una ciudad.

Cualquier persona mayor de 21 años que tenga una licencia de conducir válida puede alquilar un automóvil. Los clientes menores de 25 años o mayores de 75 años pagan cargos diferentes (más altos) que otros clientes.

Antes de alquilar un coche, un cliente suele hacer una reserva de un coche. Un cliente especifica las fechas en las que se alquilará el automóvil, el lugar de recogida, el lugar de entrega y la categoría de automóvil que desea alquilar. Un cliente puede especificar que quiere algún equipo adicional en el automóvil, por ejemplo un GPS, un asiento para un niño, etc.

Cuando un cliente alquila un coche, declara el lugar de recogida y entrega, y la fecha de entrega. El cliente puede contratar varios tipos de seguros. También puede decidir que no necesita un seguro porque el seguro está cubierto de otra manera, por ejemplo, por la compañía de su tarjeta de crédito. El cliente puede elegir opciones adicionales como la posibilidad de una devolución anticipada, varias opciones de repostaje, etc.

El cliente paga los cargos cuando devuelve el automóvil.

Empezamos resaltando todos los sustantivos: 

El siguiente paso es encontrar tablas . Buscamos las entidades básicas en el sistema. Para empezar, al menos debe tener estos:automóvil, cliente, ubicación, ciudad, equipo, categoría (automóvil), seguro. Los ponemos en el diagrama. Agregué el id columna en cada tabla porque cada tabla debe tener algún tipo de identificación. Siempre puede cambiar la clave principal más adelante.




Las entidades básicas del sistema están en el modelo, pero debe notar que nos falta la funcionalidad central del sistema:alquiler de autos y reservas. Recuerda lo que dijimos al principio:las tablas no son solo objetos físicos sino también eventos y transacciones. Debes agregar reservation y rental como tablas también. Aquí vamos:




Ahora agregamos las referencias entre las tablas en el modelo. Numé las referencias a medida que las añadía. La nota junto a cada referencia le indica cuándo se agregó:

  1. Cada coche pertenece a una categoría,
  2. Cada reserva es para una categoría de autos,
  3. Cada ubicación está en una ciudad,
  4. Cada reserva tiene un lugar de recogida y de regreso,
  5. Cada reserva la hace un cliente,
  6. Cada alquiler lo realiza un cliente,
  7. Cada alquiler es para un automóvil determinado,
  8. Cada alquiler tiene un lugar de recogida y entrega.
  9. Cada alquiler está conectado a algún seguro. Pero, ¿solo hay un seguro para cada alquiler? No. Puede haber muchos seguros relacionados con un alquiler (seguro contra daños al vehículo, contra lesiones personales, contra daños al automóvil de otra persona, ...). Agregué una tabla intermedia llamada rental_insurance conectado a rental y insurance mesas.



Todavía nos falta la referencia entre coche y equipamiento. ¿El equipo está permanentemente conectado a un automóvil o se puede mover de un automóvil a otro? No hay respuesta a esa pregunta en la descripción, por lo que haremos una suposición razonable:sí, se puede mover. Agregamos una nueva tabla car_equipment y referencias entre car y equipment .

Eliminamos la company mesa. La empresa de alquiler está implícitamente presente en el sistema. Después de todo, otra empresa tendrá su propio sistema y su propia base de datos.




Finalmente, agregamos las columnas y sus tipos de datos. También notamos que no hay relación entre reservation y equipment . Pero, ¿la reserva se hace para un equipo en particular? No, está hecho para un tipo de equipo:agregamos la tabla equipment_category y conectar las mesas reservation y equipment a ella.




¿Terminamos? Lea la descripción de nuevo. Nuestro modelo de base de datos todavía omite los cargos. Bueno...

Ese es un ejercicio para el lector. (Pero si no tiene ganas de practicar sus habilidades de modelado de bases de datos, aquí puede encontrar una estructura de base de datos lista para usar para una empresa de alquiler de automóviles).