Tôi có các sự kiện và ảnh và sau đó là nhận xét cho cả hai. Ngay bây giờ, tôi có hai bình luận bảng, một cho ý kiến liên quan đến các sự kiện, và một cho ý kiến hình ảnh. Schema là tương tự như sau:Khi hai bảng rất giống nhau, khi nào chúng nên được kết hợp?
CREATE TABLE EventComments
(
CommentId int,
EventId int,
Comment NVarChar(250),
DateSubmitted datetime
)
CREATE TABLE PhotoComments
(
CommentId int,
PhotoId int,
Comment NVarChar(250),
DateSubmitted datetime
)
Câu hỏi của tôi là có hay không tôi nên kết hợp chúng, và thêm một bảng tham chiếu chéo riêng biệt, nhưng tôi không thể nghĩ ra một cách để làm điều đó đúng. Tôi nghĩ điều này sẽ ổn thôi, suy nghĩ của bạn là gì?
Sửa
Dựa trên câu trả lời của Walter (và một số ánh sáng đọc), tôi đã đi lên với điều này:
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)
Có thực sự bất kỳ sự khác biệt về hiệu năng giữa các cấu trúc? Đối với tôi, nó có vẻ như một chút ưu tiên. Tôi thấy lợi ích trong lược đồ thứ hai, nếu tôi muốn thêm một số tính năng vào nhận xét sự kiện hoặc nhận xét ảnh, tôi có một bảng riêng để làm như vậy và nếu tôi muốn cả hai chia sẻ một thuộc tính mới, có một bảng thêm thuộc tính mới.
Nhận xét thiết kế thuần túy tốt nhất trên trang, IMHO. – Rap
Tôi đã thực hiện một số nghiên cứu và cập nhật câu hỏi.Cảm ơn cho các đầu vào – scottm
Tôi mạnh mẽ không đồng ý với câu trả lời này; trong thực tế, bạn đang cầu xin cho dữ liệu không phù hợp, lộn xộn. Nhận xét bị xóa như thế nào? Tôi thường xuyên thấy nó được thiết lập như ScottM đã thực hiện nó trong câu hỏi đã được sửa lại, và hầu như luôn luôn bình luận trong phần Bình luận, nhưng hồ sơ liên quan trong EventComments hoặc PhotoComments bị xóa, và bạn đã để lại một bản ghi đáng chú ý trong phần bình luận. – JasonFruit