Valores NULOS
También significa que el artículo tendrá 5 identificadores, incluido el suyo propio. Todo esto causa valores nulos (aparentemente un gran no no, lo cual 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
valores es 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 que el desarrollador de la aplicación tenga 10 veces más trabajo para filtrar estos registros. es MUCHO más fácil hacer una unión y si no recupera ningún registro, no hay registros relacionados en la tabla opcional.
Solo recuerda hacer un LEFT
o RIGHT OUTER
únete si quieres devolver Item
s independientemente de si tienen un Place
o Price
asociado (obtendrá NULL
valores en las columnas de tabla opcionales para Item
s que no tienen registros asociados) y un INNER
únete si solo quiero el Item
s que hacer tener un registro opcional asociado.
Claves compuestas
Una clave compuesta es una clave en una tabla que se compone de más de una columna. Si cada una de tus 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 externa en el Item
tabla para cada tabla relacionada, p. item_id
, person_id
, place_id
, price_id
. Declaras que Item
tiene su propia ID, por lo que no debería necesitar una clave compuesta, solo una clave principal en el item_id
columna.