2010-12-04 2 views
0

다른 유형의 콘텐츠를 나타내는 데이터베이스를 설정하고 있습니다. 나는 시간이 지남에 따라 다른 유형의 데이터를 가리킬 수있는 전화 번호, 전자 메일 주소 또는 웹 페이지와 같은 링크 (URL로 생각)를 가지고 있습니다.비슷한 테이블이있는 디자인

는 내가 같은 테이블을 만들 것이라고 생각 :

  • content_phone을
  • content_email
  • content_url

또한 다음 내용의 특정 유형을 가리 할 필요가있는 링크 테이블이 . 링크가 시간이 지남에 따라 변화를 가리킬 수 있습니다

내용

내용 유형은 어떤 분야가 없다 (시간 X 그것은 ... URL이 시간은 전화 번호를 가리키는 X + 1 등으로 포인트) 공통점이 있으며, 나는 그들이 그럴 것이라는 것을 기대하지 않습니다.

저는 링크와 콘텐츠 유형을 함께 연결하는 좋은 방법을 고집했습니다.

편집 :

콘텐츠 유형에 대한 관련이없는 많은 수의 테이블이 있습니다. 일부 테이블은 10 개의 필드를 가질 수 있습니다.

답변

1

로 테이블에서 뽑을 수있다

create table contact 
    person_id 
    phone .. 
    email .. 
    url .. 
    updated_at 
) 

에 개정 필드를 갖고 싶어처럼 보이는 예를 들어 "Content"라고 불리는)는 다른 내용 표의 키를 가지고 있습니다. 그런 식으로 여러 다른 가능성 대신 다른 곳에서 항상 한 테이블을 참조 할 수 있습니다. 이렇게하면 null 입력 가능 열이 필요하지 않습니다. 예 :

http://consultingblogs.emc.com/davidportas/archive/2007/01/08/Distributed-Keys-and-Disjoint-Subtypes.aspx

0

당신이 (하나 개의 상위 테이블을 만들고 다음과 같은

SELECT * FROM person JOIN contact ON (person.id = contact.person_id) ORDER BY contact.updated_at DESC LIMIT 1 

다니엘

+0

모든 null 값을 가지고 : 여기

유사한 질문 - 답변의 몇 가지 예입니다 하지만 ... 또한 실제로 연락 정보가 아니므로 , 말하자면, 번호판이나 gelolocation (논의의 목적에 중요하지 않은). – TofuBeer

1

슈퍼 타입/서브 타입은 엔티티 사이의 몇 가지 일반적인 필드가있을 때 일반적으로 권장하지만 예에 어쨌든 유용 할 수 있습니다.

관련 문제