Tengo eventos y fotos, y luego los comentarios de ambos. En este momento, tengo dos tablas de comentarios, una para los comentarios relacionados con los eventos y otra para los comentarios de las fotos. Esquema es similar a esto:Cuando dos tablas son muy similares, ¿cuándo deberían combinarse?
CREATE TABLE EventComments
(
CommentId int,
EventId int,
Comment NVarChar(250),
DateSubmitted datetime
)
CREATE TABLE PhotoComments
(
CommentId int,
PhotoId int,
Comment NVarChar(250),
DateSubmitted datetime
)
Mis preguntas es si debería o no combinarlos, y agregar una tabla de referencias cruzadas por separado, pero no puedo pensar en una manera de hacerlo correctamente. Creo que esto debería estar bien, ¿cuáles son tus pensamientos?
Editar
Sobre la base de la respuesta de Walter (y un poco de lectura ligera), se me ha ocurrido con esto:
CREATE TABLE Comments
(
CommentId int,
Comment NVarChar(250),
DateSubmitted datetime
CONTRAINT [PK_Comments] PRIMARY KEY
(
CommentId
)
)
CREATE TABLE EventComments
(
CommentId int,
EventId int
)
CREAT TABLE PhotoComments
(
CommentId int,
PhotoId int
)
ALTER TABLE EventComments ADD CONSTRAINT FK_EventComments FOREIGN KEY (CommentId) REFERENCES Comments(CommentId)
ALTER TABLE PhotoComments ADD CONSTRAINT FK_PhotoComments FOREIGN KEY (CommentId) REFERENCES Comments(CommentId)
¿Hay realmente alguna diferencia de rendimiento entre las estructuras? Para mí, parece ser un poco una preferencia. Veo los beneficios en el segundo esquema, si deseo agregar alguna especificidad a los comentarios de eventos o de fotos, tengo una tabla separada para hacerlo, y si quiero que ambos compartan una nueva propiedad, hay una sola tabla para agregue la nueva propiedad.
Mejor comentario de diseño puro en la página, en mi humilde opinión. – Rap
Hice algunas investigaciones y actualicé la pregunta.Gracias por la entrada – scottm
Estoy totalmente en desacuerdo con esta respuesta; en la práctica, estás rogando por datos inconsistentes y desordenados. ¿Cómo se eliminan los comentarios? Con frecuencia lo veo configurado como lo implementó ScottM en la pregunta revisada, y casi siempre el comentario permanece en Comentarios, pero el registro relacionado en EventComments o PhotoComments se elimina y usted queda con un registro pendiente en Comentarios. – JasonFruit