El primer enfoque no es muy grande, ya que es bastante desnormalizará. Cada vez que agrega un nuevo tipo de entidad, necesita actualizar la tabla. Tal vez sea mejor que esto sea un atributo del documento, es decir, almacenar el comentario en línea en la tabla de documentos.
Para el enfoque ResourceID
trabajar con integridad referencial, tendrá que tener una mesa Resource
, y una clave externa ResourceID
en todos sus documentos, etc .. Proyecto entidades (o utilizar una tabla de asignación.) Hacer "ResourceID "Un juego de todos los oficios, que puede ser un ID de documento, ID de proyecto, etc. no es una buena solución, ya que no se puede utilizar para indexación sensible o restricción de clave externa.
Para normalizar, necesita la tabla de comentarios en una tabla por tipo de recurso.
Comment
-------
CommentID
CommentText
...etc
DocumentComment
---------------
DocumentID
CommentID
ProjectComment
--------------
ProjectID
CommentID
Si sólo se permite un comentario, a continuación, se agrega una restricción única en la clave externa para la entidad (DocumentID, Proyectólo etc.) Esto asegura que sólo puede haber una fila para el elemento dado y por lo que sólo un comentario. También puede asegurarse de que los comentarios no se compartan utilizando una restricción única en CommentID.
EDITAR: Curiosamente, esto es casi paralelo a la implementación normalizada de ResourceID - reemplace "Comment" en el nombre de la tabla, con "Resource" y cambie "CommentID" a "ResourceID" y tiene la estructura necesaria para asociar un ResourceID con cada recurso. A continuación, puede usar una sola tabla "ResourceComment".
Si van a haber otras entidades asociadas con cualquier tipo de recurso (por ejemplo, detalles de auditoría, derechos de acceso, etc.), entonces el uso de las tablas de asignación de recursos es el camino a seguir, ya que le permitirá para agregar comentarios normalizados y cualquier otra entidad relacionada con los recursos.
¿Se puede registrar un solo comentario en más de un elemento? Por ejemplo, un documento y un proyecto o dos documentos? –
Ningún comentario puede ser solo contra un elemento – Gazeth