Estoy trabajando en la creación de una aplicación comercial para mi empresa y estoy luchando por elegir el diseño de base de datos más apropiado para una situación particular. Digamos que tengo las siguientes entidades:
Aprobación
- Carné de identidad
- Estado
- ...
Comentario de aprobación
- Carné de identidad
- Id. De aprobación
- Comentario
Orden
- Carné de identidad
- ...
Factura
- Carné de identidad
- ...
Obviamente, puede haber múltiples tipos de aprobaciones y múltiples objetos que requieren aprobaciones. ¿Cuál sería la más apropiada de las siguientes opciones para diseñar las tablas?
OPCIÓN 1
Tener una tabla de aprobaciones con claves foráneas nulas:
Aprobaciones
- Id PK
- Estado
- OrderId FK NULL
- InvoiceId FK NULL
Comentarios de aprobación
- Id PK
- ApprovalId FK
- Comentario
En este caso, tendría que agregar una columna para cada objeto que necesita una aprobación
OPCION 2
Tenga una tabla de aprobaciones principal con campos comunes y una tabla secundaria para cada objeto que necesite una aprobación:
Aprobaciones
- Id PK
- Estado
Comentarios de aprobación
- Id PK
- ApprovalId FK
- Comentario
Aprobaciones de pedidos
- Id. De aprobación PK FK
- OrderId FK
Aprobaciones de facturas
- Id. De aprobación PK FK
- InvoiceId FK
OPCION 3
Tenga una tabla de aprobaciones para cada objeto:
Aprobaciones de pedidos
- Id PK
- OrderId FK
- Estado
OrderApprovalComments
- Id PK
- OrderApprovalId FK
- Comentario
Aprobaciones de facturas
- Id PK
- InvoiceId FK
- Estado
Factura Aprobación Comentarios
- Id PK
- FactApprovalId FK
- Comentario
Sé que todas estas son soluciones válidas, pero no puedo decidir cuál sería la mejor para agregar diferentes tipos de aprobaciones en el futuro. ¿Alguna idea?
