2013-01-23 2 views
0

나는 카테고리 필드가 있습니다. 각 카테고리에는 최대 한 개의 상위 항목이 있습니다. 더 좋은 디자인입니까?동일한 테이블의 기본 및 외래 키

1) 한 테이블 : 기본 키

category_id | category_parent | category_name 

2) 개의 테이블을 category_parent 외교 CATEGORY_ID 관련 키() 및 CATEGORY_ID이다

catgory_id | category_name 

표 2

id | category | category_parent 

category, category_parent는 foreign key (category_id와 관련 있음)이며 category_id는 기본 키입니다.

답변

1

각 노드에는 부모 만 있다고합니다. 귀하의 요구 사항에 대한 첫 번째 옵션은 더 나은 디자인입니다.

두 번째 옵션은 노드가 여러 부모를 필요로하는 경우에만 필수입니다.

+0

대부분의 카테고리에 상위가없는 경우에는 어떨까요? 그래서 category_parent의 대부분은 null이지만 디자인 2에서는이 문제가 없습니다. – user1903750

+1

객체에 부모가없는 경우 null 부모를 갖는 것이 좋습니다. –

1

분명히 각 노드의 첫 번째 노드에는 하나의 상위 노드 만 있습니다. 카테고리 이름을 반복 할 수 없으므로 중복성이 없습니다.

두 개 이상의 상위 항목이있을 수있는 경우 카테고리 이름이 테이블에서 반복됩니다. 이 경우 두 개의 테이블을 작성하게됩니다.

+0

대부분의 카테고리에 상위가없는 경우에는 어떨까요? 따라서 category_parent의 대부분은 null이지만 디자인 2에서는이 문제가 없습니다. – user1903750

관련 문제