sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

Relaciones de base de datos usando phpmyAdmin (claves compuestas)

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.