La normalización requiere conocer las dependencias funcionales (FD) y las dependencias de unión (FD). No los diste.
Tu aplicación Solo podemos decirle los FD y JD si sabemos exactamente cuál es "la relación que quería expresar" (es decir, predicado) para cada tabla (es decir, hasta el punto en que podríamos ver una situación y saber para cada fila posible si hace una proposición verdadera a partir del predicado y, por lo tanto, pertenece a la tabla) y exactamente qué posibles situaciones pueden surgir (a través de "reglas comerciales" sobre posibles situaciones de aplicación, equivalentes a restricciones sobre posibles estados de la base de datos).
Tus "claves" No diste FD. Acaba de dar una clave candidata (CK) y una "clave única". Pero no puede determinar algunas o todas las CK sin saber ciertas cosas sobre las FD. Entonces, cuando das CK, es lo mismo que decir que hay y no hay ciertos FD. Debe decirnos lo que nos ha dado cuando proporciona algunos conjuntos de columnas etiquetados como PK o "clave única":¿una "clave única" es una CK (que no contiene un subconjunto único más pequeño) o simplemente una superclave (única)? ¿Diste todos los CK o podría haber otros? ¿Podría haber otras superclaves además de los superconjuntos de las dadas? Es más útil si nos dice exactamente qué FD sabe que tiene (a través de una cobertura mínima) y cuáles sabe que no tiene.
Suposiciones
No tengo idea de qué is_calculated
es para.
Tal vez una date
determinada y meal
el par tiene exactamente un content
?
TL;RD Realmente necesita verificar cada conjunto posible de columnas para ver si determina funcionalmente cada columna. Es decir, si para cada estado de base de datos aparece una subfila de valores para el conjunto de columnas solo con un valor para la columna. Solo podemos adivinar sin una comprensión clara de sus predicados y su aplicación. Puede reducir el trabajo de la siguiente manera:si un conjunto de columnas es único, sus superconjuntos determinan todas las demás columnas. Si un conjunto de columnas es mínimamente único (es un CK), ninguno de sus subconjuntos más pequeños determina todas las demás columnas. Puede buscar contraejemplos para DF putativos, donde dos filas pueden tener la misma subfila de valores para un determinante putativo pero tener valores diferentes para un atributo determinado putativo. Los axiomas de Armstrong generan todas las FD implícitas en las dadas.
JD La normalización a 4NF y 5NF implica dividir la tabla en varias tablas para eliminar los JD que no están implícitos en los CK. El predicado de una tabla se puede expresar como el AND de otros exactamente cuando un JD se mantiene correspondiente a los conjuntos de columnas de los predicados. Una relación está en 5FN cuando cada conjunción en cada JD se superpone a alguna otra en al menos una CK. (Algoritmo de membresía de Fagin).
PD Si le importan las restricciones, ¿perdió una cuando pasó de una mesa a dos?