2012-12-18 4 views
0

여러 개의 관계를 가질 수있는 엔티티가 여러 개 있습니다.하나의 열에 대해 여러 개의 테이블 외래 키가 가능합니까?

난 다음 한 entitites :

  1. ENTITY_TYPE
  2. 태그
  3. ENTITY_TYPE 테이블에서 계정

모든 엔티티를 설명하는 news_post

  • tag_assignment
  • 그 전 내 프로젝트 (예 : 뉴스 포스트, 블로그 게시물, 메시지, 계정, 모든 것) Entity_type 테이블에는 id 및 name 필드 만 있고, name 필드에는 사용 가능성을위한 모델 클래스 이름이 나와 있습니다.

    태그 엔터티에는 ID와 이름이 있습니다. 태그 지정 엔티티로 나중에 다른 엔티티로 매핑되는 독립형 엔티티

    태그 지정 엔티티는 id, tag_id, entity_type_id 및 entity_id를 갖습니다. Entity_type_id는 엔티티를 찾을 수 있음을 나타내고 entity_id는 엔티티를 지정합니다.

    1. tag_assignment.entity_type_id => ENTITY_TYPE (ID)
    2. tag_assignment.entity_id => news_post (ID), 계정 (:

      그래서 나는 결합 foreig 하나 열에서 여러 테이블에 다음 키를 만들고 싶어 id) 등

    이 결합 된 키를 만들 수 있습니까? 만약 entity_type 테이블에서 행을 지우면 의존성을 만들면 모든 것이 삭제되거나 다른 테이블에서 업데이트됩니다. 계정을 삭제하면 계정 테이블에 외래 키가있는 tag_assignments 만 삭제됩니다.

  • 답변

    1

    entity 테이블을 추출하여 데이터베이스를 정규화해야합니다. 이 테이블의 개념은 OOP의 추상 클래스와 유사합니다. 데이터베이스에있을 수있는 news_post, account 및 기타 엔티티은 모두 entity 테이블을 참조해야합니다. 이 방법을 사용하면 현재 있거나 앞으로있을 공통적 인 특정 위치의 엔티티를 참조 할 수 있습니다.

    enter image description here

    또한 당신은 EAV model을 숙지 할 수 있습니다. 이는 유사한 설계 문제를 해결하는 데 도움이 될 수 있습니다.

    관련 문제