Soy bastante nuevo en el diseño de bases de datos, pero entiendo los fundamentos. Estoy creando una base de datos relacional y me gustaría hacer algo similar a crear un tipo o clase reutilizable. Por ejemplo, supongamos que tengo una tabla Customer
y una tabla Item
. El cliente y el artículo están relacionados por una relación estándar de uno a varios, por lo que el artículo tiene una columna llamada CustomerId
.¿Cómo modelar un tipo personalizado en una base de datos relacional?
También me gustaría tener varias "notas" para cada cliente y cada artículo. En un modelo OOP normal, solo crearía una clase Note
y crearía instancias de eso siempre que lo necesitara. Por supuesto, una base de datos relacional es diferente. Estaba pensando en tener una tabla Note
, y me gustaría una relación de 1 a muchos entre el Cliente y la Nota, así como el Artículo y la Nota. El problema entonces es que la tabla de notas tendrá que tener una columna para cada otra tabla que desee usar este "tipo". (Ver ejemplo a continuación)
También pensé que en su lugar, podría crear una tabla intermedia entre Nota y Cliente/Artículo (u otros). Esto me permitiría evitar tener columnas adicionales en Note para cada tabla que hace referencia a él, por lo que la nota podría permanecer igual ya que agrego más tablas que requieren notas. Estoy pensando que esta es la mejor solución. (ver ejemplo)
¿Cómo se maneja este tipo de situaciones? ¿Estoy cerca de corregir? Agradecería cualquier consejo sobre cómo diseñar mi base de datos para tener el tipo de funcionalidad que he descrito anteriormente.
Pregunta: ¿una nota cada vez se aplica a múltiples entidades; es decir, ¿se puede aplicar la misma nota tanto a un cliente como a un artículo? ¿O la misma nota puede aplicarse a múltiples clientes o a múltiples artículos? –
No, cada nota sería solo para un solo cliente, artículo o lo que sea. –
Nada en el diseño de su base de datos lo impide. Debe mover los campos TEXTO y FECHA de NOTA a Nota al Cliente y Notación de Artículo para asignar correctamente el mapa de que cada nota se puede asociar con un Cliente o Artículo como máximo. Como resultado, la tabla NOTA se eliminaría por completo. –