Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/06/2012, 11:31
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Armar consulta mysql

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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)