2013-06-14 3 views
-4

테이블이 있습니다. 카테고리, 제목 및 성적.다중 테이블과의 관계

Category -> id, name, desc; 
Subject -> id, name, desc, category_id; 
Grade -> id, name, desc, subject_id. 

그리고 다른 가격표가 있습니다. 즉 카테고리, 주제, 또는 학년입니다, 그것은 현재

Price -> id, amount, category_id. 

네, 가격이 범주에 추가 된, 그러나 새로운 요구 사항은 가격이 어떤 수준에 추가 될 수있다.

-> id, amount, category_id, subject_id, grade_id와 같이 Foreign Keys를 Price 테이블에 추가하여 해결할 수있는 방법을 알고 있습니다. 그런 다음 관련 테이블보다 NULL로 두십시오.

잘 모르겠다. 더 나은 해결책이며 완벽한 데이터베이스 스키마를 만들고 싶습니다. 대체 방법을 제안 해주세요.

나는 MySQL과 PHP를 사용합니다.

+0

[가능한 두 테이블 중 하나에 MySQL 외래 키를 수행 할 수 있습니까?] (http://stackoverflow.com/questions/441001/possible-to-do-a-mysql-foreign-key-to -one-of-two-possible-tables) –

답변

2

해결 방법 1 : 나는이 하나 개의 솔루션이 직접 세 개의 테이블의 각 금액 필드를 추가하는 말과 관계를 분배 할 각 테이블

에 가격 숫자 필드를 추가합니다. 가격이없는 개체의 가격은 0입니다.

해결 방법 2 : 당신이 항목을 생략 가격이없는 당신의 세 원래의 테이블에있는 행의 경우

CategoryPrice -> Category_ID, Price 
SubjectPrice -> Subject_ID, Price 
GradePrice -> Grade_ID, Price 

세 가격 관계 테이블

당신은 세 개의 테이블에게 이러한 존재를 만들 수 있습니다 만들기 가격 관계 테이블.

해결 방법 3 : 당신은 고유 ID를해야합니다 "개체"라는 슈퍼 테이블을 만들 수있는 가격 표

에 가입 슈퍼 형식을 만듭니다. 모든 카테고리, 주제 및 성적은 하위 유형별로 동일하므로 동일한 ID를 공유합니다.

따라서 가격 테이블의 Object_ID를 사용하여 개체에 가격을 할당 할 수 있습니다.

+0

가격은 조건에 따라 변경 될 수 있기 때문에 솔루션 1은 적용 할 수 없습니다. 나는 가격표에서 Term ID를 피했다. – Sureshkumar

+0

아주 좋은 아이디어 -> 해결책 3. 고마워. – Sureshkumar

관련 문제