Cómo traducir un diagrama E/R a tablas SQL: traspaso básico, entidades débiles, jerarquías isA, agregación, teoría de llaves, restricciones de integridad y las 5 reglas de oro del buen diseño.
Sin ON DELETE CASCADE, borrar un curso con evaluaciones falla por violar la FOREIGN KEY —o, peor, deja evaluaciones huérfanas si la FK no está bien declarada. El CASCADE no es un detalle de implementación: es la traducción literal de que la entidad débil no existe sin su dueño.
-- La relación 'tiene' entre Área y Locación queda encapsulada:CREATE TABLE area_locacion ( area TEXT NOT NULL REFERENCES area(id), locacion TEXT NOT NULL REFERENCES locacion(id), PRIMARY KEY (area, locacion)); -- La tabla que se relaciona con la agregación referencia-- TODAS las llaves de la relación encapsulada:CREATE TABLE asignado ( area TEXT NOT NULL, locacion TEXT NOT NULL, empleado TEXT NOT NULL REFERENCES empleado(rut), PRIMARY KEY (area, locacion, empleado), FOREIGN KEY (area, locacion) REFERENCES area_locacion(area, locacion));Toda llave primaria es candidata, y toda candidata es superllave. La flecha no corre al revés: no toda superllave es mínima, y no toda candidata fue la elegida como primaria.
Un CHECK puede comparar dos columnas de la misma fila (como fecha_fin > fecha_inicio), pero no puede consultar otras filas ni otras tablas. Para reglas que cruzan filas o tablas —como cobertura o solapamiento en una jerarquía— hace falta un TRIGGER.