>데이터 베이스 >MySQL 튜토리얼 >데이터베이스 관계에 대해 구분자 열이 있는 하위 유형이나 단일 테이블을 사용해야 합니까?

데이터베이스 관계에 대해 구분자 열이 있는 하위 유형이나 단일 테이블을 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-31 01:41:12371검색

Should I Use Subtypes or a Single Table with a Discriminator Column for Database Relationships?

데이터베이스 테이블 관계를 위한 하위 유형 설계

데이터베이스 스키마를 설계할 때 주요 고려 사항 중 하나는 하위 유형을 사용할지 여부를 결정하는 것입니다. 객체 지향 프로그래밍의 맥락에서 하위 유형은 상위 유형 또는 상위 클래스에서 속성과 메서드를 상속하는 파생 클래스입니다. 데이터베이스에서 이 개념은 테이블 관계에 적용될 수 있습니다.

주어진 시나리오에서 데이터베이스에는 BOOKS, ARTICLES 및 참고. 각 책이나 기사에는 여러 개의 메모가 있을 수 있으며 원래 디자인에서는 책 메모와 기사 메모를 구별하기 위해 note_type이라는 판별자 열이 있는 단일 NOTES 테이블을 제안했습니다. 그러나 이 접근 방식은 데이터 무결성 문제와 중복으로 이어질 수 있습니다.

질문에서 제안된 대안 접근 방식은 5가지를 사용하는 것입니다. 테이블:

  • 도서
  • 기사
  • 참고
  • BOOK_NOTES
  • ARTICLE_NOTES
이것 디자인은 책과 기사 메모를 별도의 테이블로 분리하므로 판별자 열이 필요하지 않습니다. 이 접근 방식은 데이터 무결성을 보장하지만

NOTES 테이블이 책과 기사 모두에 대해 복제되므로 중복이 발생합니다.

대안 접근 방식을 고려하십시오: 수퍼 유형 테이블과 함께 상위 유형/하위 유형 디자인을 사용하는 것입니다.

PUBLICATION이라고 하고 BOOKS에 대한 하위 유형 테이블을 기사. 이 시나리오에서 PUBLICATION 테이블에는 책과 기사 모두에 공통적인 열이 포함되고, 하위 유형 테이블에는 각 유형에 특정한 열이 포함됩니다.

PUBLICATION {

    아이디 (PK)

위 내용은 데이터베이스 관계에 대해 구분자 열이 있는 하위 유형이나 단일 테이블을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.