2011-12-19 6 views
0

나는 출장을위한 데이터베이스를 만들려고합니다. 여행은 Location, ModePreferences입니다. (모두 엔티티 또는 클래스입니다.) 이제 각각 TripPreferencesPreferences 중 하나만 가질 수 있다고 가정 해 봅니다. 여러 번 여행 할 수 있습니다."여행 기본 설정", 데이터베이스 디자인

지금, 나는이 방법으로 모델링 한 :

'의 환경 설정'는 FK (그리고 pref1, pref2 및 pref3 부울 종류)입니다
Trips(id, attr1, attr2, ..., prefs); 
Preferences(id, pref1, pref2, pref3); 

.

: 나도 같은 기본 설정 값으로 pref1, pref2 true로 pref3, 그리고 (ID = 2) 또 다른 여행과 함께 (ID = 1) 여행을 저장할 때, 나는 이런 식으로 뭔가를해야합니다

좋아,

+------+----+-------+-----+---------------+ 
| Trip | id | attr1 | ... | prefs   | 
+------+----+-------+-----+---------------+ 
|  | 1 | X | ... | 10   | 
+------+----+-------+-----+---------------+ 
|  | 2 | X | ... | 20   | 
+------+----+-------+-----+---------------+ 


+-------------+------+-------+-------+---------+ 
| Preferences | id | pref1 | pref2 | pref3 | 
+-------------+------+---------------+---------+ 
|    | 10 | True | True | True | 
+-------------+------+---------------+---------+ 
|    | 20 | True | True | True | 
+-------------+------+---------------+---------+ 

질문 : 중복성이 많지 않습니까? 같은 기본 설정 값으로 100 회의 여행을 저장한다고 가정하면 동일한 값을 가진 Preferences 테이블에 100 개의 행이 생깁니다.

아마도 내 응용 프로그램과 관련된 데이터베이스 설계가 아닌 문제 일 수 있습니까?

감사합니다.

(내 기본적인 영어로는 유감스럽게 생각합니다.)

답변

0

디자인이 제대로 정상화되지 않아 비효율적이거나 데이터 유지 관리에 어려움을 겪을 수 있습니다.

귀하의 질문에서 말씀하기가 약간 어렵지만, pref1, pref2pref3은 각 여행에 적용되거나 적용되지 않을 수있는 다른 사물 또는 주입니다. 각 여행마다 거기에 있거나 존재하지 않는 한정된 수의 물건이 있다면 자신의 테이블의 행으로 물건 (선호도)을 처리하고 각 여행에 적용되는 것을 나타내는 교차 테이블을 사용하는 것이 좋습니다. 이 같은

뭔가 : 그것은 중복을 제거하고 당신이 여행에 적용 할 수있는 환경 설정의 수를 확장하기로 결정한다는 미래를위한 더 유연로

Trips 
(id 
, attr1 
, attr2 
) 

Preferences 
(id 
, description 
) 

Trip_Preferences 
(trip_id 
, preference_id 
, value -- If the value is true/false, then you have the option of leaving this out 
     -- and just using the presence or absense of a record in this table as the 
     -- indication of the value. 
) 

이러한 디자인은 더 나은 옵션입니다.

+0

감사! 나는 네 디자인이 훌륭하다고 생각해. –