2010-01-13 3 views
0

내가 직면 한 과제는 공통 테이블에 대한 좋은 모델 디자인을 제시하는 것입니다. 표 "메모"는 다른 객체에 의해 참조됩니다. 한 가지 방법으로, 나는 2 개의 필드 객체 유형을 정의하고 객체 ID를 기록하여 유형이 메모가 속한 객체를 기록하는 것으로 생각했습니다. 그렇다면 이것이 최선의 방법인지 확신 할 수 없습니다. 노트의 목록과 그들이 속한 오브젝트의 이름을 생성 할 때 모든 오브젝트 유형에 대한 조회를 수행하고 이들을 모두 결합으로 결합해야합니다. 내 마음을 넘어선 또 다른 접근법은 객체 유형이있는만큼 많은 필드를 추가하고 이러한 모든 테이블을 쿼리의 노트에 간단하게 결합하는 것이 었습니다. 문제에 대한 의견을 보내 주시면 감사하겠습니다.더 많은 테이블을 참조하는 테이블 필드에 대한 실용적인 디자인

답변

3

개체 당 최대 메모가 하나있는 경우 각 개체의 테이블에 nullable noteid 필드를 추가하십시오. 이러한 제한이 없으면

이 가장 정규화 방법은 기본 키 식별자 쌍의 그들 각각의 대응하는 참조와 noteidobjectid 함유 각각 별개의 개체 유형 테이블위한 링크 테이블 를 생성하는 것이다 표; 이것은 하나의 오브젝트가 둘 이상의 노트에 링크되거나 하나의 노트가 둘 이상의 오브젝트에 링크되는 경우도 수용합니다. 또한 null 입력 가능 필드가 도입되지 않지만 쿼리가 더욱 복잡해집니다. 성능면에서 두 테이블 모두 각각의 테이블을 인덱싱해야 할 수도 있습니다.

매우 일반적인 방법이지만 데이터 모델의 무결성을 크게 약화시키는 유형 코딩 (즉, 해당 유형을 지정하는 열 포함). 허용 된 값 테이블을 사용하는 경우에도 허용 된 값 테이블의 행과 연결된 테이블의 정의 간에는 여전히 중복이 선택되어 있지 않습니다.

0

첫 번째 방법은 정확합니다. 두 테이블 사이에 앉아서 관계를 추적하는 M2M 테이블입니다.

노트가 유형과 관련이 없기 때문에 노트 테이블에 유형이있는 엄격한 데이터 모델 관점에서 보면 잘못된 것입니다. 그래서 M2M 테이블에 그 정보를 유지하는 것이 더 정확하다고 느낍니다. 그러나 M2M은 더 힘들며 프레임 워크에 따라 적절하지 않을 수 있습니다.

희망 하시겠습니까?

관련 문제