Pregunta

Estoy un poco confundido en hacer una buena base de datos relacional. Estoy usando phpMyAdmin para crear una base de datos. Tengo las siguientes cuatro tablas. No se preocupe por ese lugar de hecho y el precio es opcional que son.

  1. Persona (obligatoria)
  2. Artículo (obligatorio)
  3. Lugar (opcional)
  4. Precio (opcional)

El artículo es la tabla principal. Siempre tendrá una persona vinculada. * Sé que te unes en MySQL para las tablas. Si quiero unir las tablas, podría usar claves compuestas (usando las ID de cada tabla), sin embargo, ¿es esta la forma más correcta de vincular las tablas? También significa que el artículo tendrá 5 ID, incluidas las suyas. Todo esto causa valores nulos (aparentemente un gran no, que puedo entender) porque si el lugar y el precio son opcionales y no se usan en una entrada a la tabla de elementos, tendré un valor nulo allí. ¡Por favor ayuda!

Gracias por adelantado. Espero que esto tenga sentido.

¿Fue útil?

Solución

Valores nulos

También significa que el artículo tendrá 5 ID, incluidas las suyas. Todo esto causa valores nulos (aparentemente un gran no, que puedo entender) porque si el lugar y el precio son opcionales y no se usan en una entrada a la tabla de elementos, tendré un valor nulo allí

Personalmente creo que esta es una situación en la que NULL Los valores son perfectos, y ciertamente no tendría ninguna duda sobre poner esto en el diseño de mi base de datos.

Una forma en que he visto a otros lograr lo mismo sin NULL Los valores son crear un registro en las tablas opcionales (lugar y precio en su ejemplo) con una ID de 0 que significa que no hay un registro relacionado, pero esto solo hace 10 veces más trabajo para el desarrollador de la aplicación para filtrar estos registros - Es mucho más fácil hacer una unión y si no obtiene ningún registro, no hay registros relacionados en la tabla opcional.

Solo recuerda hacer un LEFT o RIGHT OUTER Únete si quieres regresar Items independientemente de si tienen un Place o Price asociado (obtendrá NULL valores en las columnas de tabla opcionales para Items que no tienen registros asociados) y un INNER Únete si solamente quiero el Items hacer tener un registro opcional asociado.

Llaves compuestas

Una clave compuesta es una clave en una tabla que está compuesta por más de una columna. Si cada uno de sus Person, Item, Place y Price Todos tienen una ID (incluso si es solo un número de incremento automático) no necesitará una clave compuesta, solo una columna de clave principal en cada tabla y una columna de clave extranjera en el Item tabla para cada tabla relacionada - por ejemplo item_id, person_id, place_id, price_id. Afirmas que Item tiene su propia identificación, por lo que no debería necesitar una clave compuesta, solo una clave principal en el item_id columna.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top