Cita: Personas // tiene un campo id único
Empresas // tiene un campo id unico
Oficinas // tiene un campo id que se relaciona con el id de empresas o personas, y otro campo "type" que toma valor 0 si es una persona o 1 si es una empresa
Lamento decirte que acabas de reprobar Base de Datos I.
El diseño de las relaciones está completamente mal.
Una FK no puede estar jamás refiriéndose a dos entidades diferentes. Cada FK apunta a una única tabla. hacerlo de otra forma no sólo es una violación
flagrante al modelo relacional, es la puerta para tener enormes problemas de inconsistencia e integridad referencia.
Si tienes tres entidades, Empresas, Oficinas y Personas, lo que estás planteando es:
- Una Empresa tiene N oficinas y cada oficina es de una única empresa (relación 1:N, la FK de Empresa va en oficina.
- En una oficina trabajan diferentes personas, pero cada persona trabaja en una única oficina (relación 1:N, la FK de oficina va en Persona).
Esto quiere decir que la relación es Empresa -> Oficina <- Persona.
¿Se comprende la cosa?
Si no empiezas a modelar correctamente la base, después será demasiado tarde.