나는 이벤트와 사진을 가지고있다. 지금은 두 개의 댓글 테이블이 있습니다. 하나는 이벤트와 관련된 댓글 용이고 다른 하나는 사진 댓글 용입니다. 스키마는이 유사합니다두 테이블이 매우 비슷한 경우 언제 결합해야합니까?
CREATE TABLE EventComments
(
CommentId int,
EventId int,
Comment NVarChar(250),
DateSubmitted datetime
)
CREATE TABLE PhotoComments
(
CommentId int,
PhotoId int,
Comment NVarChar(250),
DateSubmitted datetime
)
내 질문에 내가 그들을 결합하고, 별도의 상호 참조 테이블을 추가,하지만 난 그것을 제대로 할 수있는 방법을 생각할 수 없다할지 여부입니다. 나는 이것이 잘되어야한다고 생각한다. 당신의 생각은 무엇인가?
편집 월터의 대답은 (일부 빛 읽기)을 기반으로
, 나는이 함께 왔어요 :
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)
는 구조 사이의 성능 차이는 정말 있습니까? 나에게 그것은 조금 선호하는 것처럼 보인다. 두 번째 스키마에서 이점을 볼 수 있습니다. 이벤트 주석이나 사진 주석에 몇 가지 특수성을 추가하려면 별도의 테이블을 사용해야하며 새 속성을 공유하려면 단일 테이블이 있어야합니다. 새 속성을 추가하십시오.
IMHO 페이지의 가장 순수한 디자인 주석. – Rap
나는 약간의 연구를했고 질문을 업데이트했다.입력 해 주셔서 감사합니다. – scottm
이 답변에 동의하지 않습니다. 실제로는 일관성없고 지저분한 데이터를 요구하고 있습니다. 댓글은 어떻게 삭제됩니까? 저는 ScottM이 수정 된 질문에서 구현 한 것처럼 자주 설정하는 것을 보았습니다. 거의 항상 코멘트에 주석이 있지만 EventComments 또는 PhotoComments의 관련 레코드는 삭제되고 주석에 매달린 레코드가 남아 있습니다. – JasonFruit