내가 직면 한 과제는 공통 테이블에 대한 좋은 모델 디자인을 제시하는 것입니다. 표 "메모"는 다른 객체에 의해 참조됩니다. 한 가지 방법으로, 나는 2 개의 필드 객체 유형을 정의하고 객체 ID를 기록하여 유형이 메모가 속한 객체를 기록하는 것으로 생각했습니다. 그렇다면 이것이 최선의 방법인지 확신 할 수 없습니다. 노트의 목록과 그들이 속한 오브젝트의 이름을 생성 할 때 모든 오브젝트 유형에 대한 조회를 수행하고 이들을 모두 결합으로 결합해야합니다. 내 마음을 넘어선 또 다른 접근법은 객체 유형이있는만큼 많은 필드를 추가하고 이러한 모든 테이블을 쿼리의 노트에 간단하게 결합하는 것이 었습니다. 문제에 대한 의견을 보내 주시면 감사하겠습니다.더 많은 테이블을 참조하는 테이블 필드에 대한 실용적인 디자인
0
A
답변
3
개체 당 최대 메모가 하나있는 경우 각 개체의 테이블에 nullable noteid
필드를 추가하십시오. 이러한 제한이 없으면
이 가장 정규화 방법은 기본 키 식별자 쌍의 그들 각각의 대응하는 참조와 noteid
및 objectid
함유 각각 별개의 개체 유형 테이블위한 링크 테이블 를 생성하는 것이다 표; 이것은 하나의 오브젝트가 둘 이상의 노트에 링크되거나 하나의 노트가 둘 이상의 오브젝트에 링크되는 경우도 수용합니다. 또한 null 입력 가능 필드가 도입되지 않지만 쿼리가 더욱 복잡해집니다. 성능면에서 두 테이블 모두 각각의 테이블을 인덱싱해야 할 수도 있습니다.
매우 일반적인 방법이지만 데이터 모델의 무결성을 크게 약화시키는 유형 코딩 (즉, 해당 유형을 지정하는 열 포함). 허용 된 값 테이블을 사용하는 경우에도 허용 된 값 테이블의 행과 연결된 테이블의 정의 간에는 여전히 중복이 선택되어 있지 않습니다.
0
첫 번째 방법은 정확합니다. 두 테이블 사이에 앉아서 관계를 추적하는 M2M 테이블입니다.
노트가 유형과 관련이 없기 때문에 노트 테이블에 유형이있는 엄격한 데이터 모델 관점에서 보면 잘못된 것입니다. 그래서 M2M 테이블에 그 정보를 유지하는 것이 더 정확하다고 느낍니다. 그러나 M2M은 더 힘들며 프레임 워크에 따라 적절하지 않을 수 있습니다.
희망 하시겠습니까?
관련 문제
- 1. 더 많은 테이블 또는 더 많은 데이터베이스?
- 2. DB 스키마 디자인, 많은 컬럼을 가진 테이블
- 3. 더 많은 스윙 디자인 및 동작
- 4. 순환 날짜에 대한 테이블 디자인
- 5. 초급 mySql 질문 - 다른 많은 ID를 참조하는 하나의 테이블
- 6. SQL - 더 많은 테이블 정보에 연결
- 7. before_validation에 대한 더 많은 방법
- 8. 문자열 필드에 대한 쿼리 필터 디자인
- 9. 실용적인 XML 문서 작성기 디자인 찾기
- 10. lambdaj에 대한 실용적인 소개?
- 11. oracle에서 많은 참조가있는 테이블을 지우려면 어떻게합니까?
- 12. XML 테이블을 Datatable 필드에 매핑하십시오.
- 13. 클래스의 테이블 필드에 대한 정보 보유
- 14. Mysql 테이블 디자인 : 테이블 역할
- 15. 많은 모델을 참조하는 모델입니까?
- 16. MySQL의 복제 마스터 - 슬레이브가 슬레이브에 더 많은 테이블을 가지고 있음
- 17. SQL 테이블 디자인 조언
- 18. 많은 사용자를위한 많은 테이블?
- 19. 다수의 행에 대한 테이블 디자인 옵션?
- 20. 장고에 M2M 관련 필드에 대한 테이블을 만들지 않게하려면 어떻게해야합니까?
- 21. SQLite 테이블 디자인 질문
- 22. 많은 관계에 많은 테이블을 먼저 명명합니까?
- 23. 데이터베이스 디자인 : 매핑 테이블을 사용해야합니까?
- 24. 가 사용되는 얼마나 많은 시간을 알려주는 태그 테이블을 디자인
- 25. 변경 가능한 테이블을 참조하는 변경 불가능한 테이블을 처리하는 방법은 무엇입니까?
- 26. MSSQL 데이터베이스에서 더 많은 테이블을 사용하면 속도가 느려 집니까?
- 27. SQL 디자인 조언 : 하나의 FK 열, 참조 할 많은 테이블
- 28. 전체 피벗 테이블을 참조하는 수식은 무엇입니까?
- 29. 많은 데이터베이스 디자인 문제가 발생했습니다
- 30. 데이터베이스 테이블 디자인 컨트롤