나는 다양한 카테고리를 포함 할 테이블을 가지고 있습니다. 다음은 축소 된 테이블 구조 : 데이터 무결성이 동일한 테이블 내에서 유지 될 수 있도록 외래 키를 사용하는 동안 동일한 테이블에 parent_id가 포함 된 테이블
tb_categories
category_id
category_name
category_parent_id
내가 CATEGORY_ID에 category_parent_id에 외래 키 제약 조건을 만들었습니다.
첫 번째 질문은 동일한 테이블에 외래 키를 갖는 것이 좋습니다. 제 사고 방식에서 저는 그러한 경우에 그렇다고 생각하고 있습니다. 그것은 좋은 습관입니다.
두 번째 질문은 전역 상위 엔티티를 저장하는 방법에 대한 최상의 접근 방법은 무엇입니까?
방법 1 :
나는 다음과 같은 방법을 함께했다 category_parent_id이 널 (null)을 저장할 수있는 유일한 널 모든
방법 2라는 글로벌 상위 범주이다 : 널 (null)을 저장할 수 없습니다 category_parent_id 글로벌 parrent ALL 동일한 category_id를 포함합니다. 따라서이 카테고리에 대해서만 category_id와 category_parent_id가 동일합니다. null이 없으면 0이 category_id로 존재하지 않으므로이 category_parent_id를 0으로 삽입 할 수 없습니다.
방법 3 : 글로벌 부모가없고 다른 '부모'가 있습니다. 예를 들어 Audio, Visual을 부모 및 MP3로, WMA를 Audio의 하위로, MPEG을 AVI로 Visual의 하위로 사용합니다. 이 방법을 통해 방법 1과 2의 동일한 원리가 적용됩니다.
방법 4 :이 외래 키 제약 조건을 포함하지 않는 것을 선호하는 가장 간단한 방법이며 따라서 전역 부모를 0으로 설정하여 다른 범주에 존재하지 않게 할 수 있습니다.
제안 사항? 내가 최선의 관행을 찾고 있으며 '단지 효과가있는'것이 아닙니다.
[소프트웨어 문제에 대한 하나 개의 최고의 디자인 솔루션은 거의 없다. (http://www.codinghorror.com/blog/ 2008/03/revisiting-the-facts-and-fallacies-of-software-engineering.html) "Just works"는 얻을 수있는만큼 훌륭합니다. – Andomar
나는 일반적으로 'Just works'를 언급하지 않는다. 나는 지금 당장의 일을 언급하고 있으며 앞으로 문제가 발생한다. – seedg