Estoy diseñando una base de datos que maneja los usuarios, cuentas y proyectos con las siguientes relaciones y restricciones:Descomposición de una relación ternaria en relaciones binarias
- una cuenta tiene muchos usuarios
- un usuario pertenece a muchas cuentas
- una cuenta tiene muchos proyectos
- Un proyecto pertenece a única una cuenta
- Un usuario colabora en muchos proje cts (nota redundante: cada uno de ellos pertenece a su propia cuenta).
En otras palabras, un usuario puede colaborar en muchos proyectos de la misma cuenta. Pero dado que un usuario puede pertenecer a varias cuentas, un usuario puede colaborar en muchos proyectos de varias cuentas. Esto me lleva a una ternaria colabora relación:
Después de leer un par de artículos sobre la conversión de las relaciones ternarias en relaciones binarias que ocurrió con las siguientes relaciones equivalentes:
Dos preguntas surgen aquí:
¿Es correcta esta conversión? He descubierto que tengo que agregar comprobaciones adicionales a nivel de aplicación para manejar las inserciones. Por ejemplo, antes de agregar un nuevo
(User,Project)
, debo verificar que el usuario pertenece a la misma cuenta a la que pertenece el proyecto.¿Es realmente necesario establecer la relación entre
Account
yUser
? Una vez que se ha agregado la relación entreUser
yProject
, ¿no podríamos conocer la cuenta a la que pertenece un usuario al acceder al proyecto?
Thanks !!
Me gusta su enfoque, pero mucha gente recomienda la descomposición por defecto, de ahí mi pregunta. – elitalon
¿Quién recomienda descomponerse por defecto? –
@elitalon Nunca haga algo solo porque alguien (¡incluido yo!) Le diga que lo haga. Comprenda siempre qué está haciendo y ** por qué **; de lo contrario, estará [programando por coincidencia] (http://pragprog.com/the-pragmatic-programmer/extracts/coincidence). –