2014-09-04 3 views
0

자산 등록의 일부로 사용할 수있는 개인용 소방 장비의 허용 가능한 구성을 설명하기 위해 MS Access에서 네 개의 테이블을 만들었습니다. 세부 사항은 다음과 같습니다 MS Access - 참조 무결성 유지 - 여러 테이블 외래 키 제약

TBL_1 : FIRE_CLASSIFICATION 
FIELDS : | PK | CLASS    | 
--------------------------------------- 
ENTRIES : | 1 | Fire Blanket  | 
      | 2 | Fire Extinguisher | 
      | 3 | Fire Hose Reel  | 

TBL_2 : FIRE_TYPE 
FIELDS : | PK | TYPE    | FK_CLASS   | 
------------------------------------------------------------ 
ENTRIES : | 1 | General   | Fire Blanket  | 
      | 2 | Carbon Dioxide  | Fire Extinguisher | 
      | 3 | Foam    | Fire Extinguisher | 
      | 4 | Powder ABE   | Fire Extinguisher | 
      | 5 | Powder BE   | Fire Extinguisher | 
      | 6 | Vap. Liquid  | Fire Extinguisher | 
      | 7 | Water    | Fire Extinguisher | 
      | 8 | Wet Chemical  | Fire Extinguisher | 
      | 9 | General   | Fire Hose Reel  | 

TBL_3 : FIRE_SPECIFIC 
FIELDS : | PK | SPECIFIC   | FK_CLASS   | 
------------------------------------------------------------ 
ENTRIES : | 1 | Dimensions   | Fire Blanket  | 
      | 2 | Capacity (kg)  | Fire Extinguisher | 
      | 3 | Length (m)   | Fire Hose Reel  | 

TBL_4 : FIRE_OPTIONS 
FIELDS : | PK | FK_CLASS   | FK_TYPE  | FK_SPECIFIC | OPTION |  
---------------------------------------------------------------------------------- 
ENTRIES : | 1 | Fire Extinguisher | Carbon Dioxide | Capacity (kg) | 2.0 | 
      | 2 | Fire Extinguisher | Carbon Dioxide | Capacity (kg) | 3.5 | 
      | 3 | Fire Extinguisher | Carbon Dioxide | Capacity (kg) | 5.0 | 
      | 4 | Fire Extinguisher | Powder ABE  | Capacity (kg) | 1.1 | 
      | 5 | Fire Extinguisher | Powder ABE  | Capacity (kg) | 2.1 | 
      | 6 | Fire Extinguisher | Powder ABE  | Capacity (kg) | 2.3 | 
      | 7 | Fire Extinguisher | Powder ABE  | Capacity (kg) | 2.7 | 
      | 8 | Fire Extinguisher | Powder ABE  | Capacity (kg) | 4.5 | 
      | 9 | Fire Extinguisher | Powder ABE  | Capacity (kg) | 9.0 | 
      | 10 | Fire Hose Reel  | General  | Length (m)  | 12.0 | 
      ... CONTINUED 

는 현재이 입력 항목 FIRE_OPTIONS 테이블에 같은

  | 11 | Fire Hose Reel  | Powder ABE  | Dimensions  | 1200 x 1200 |  

를 삽입 할 수 있습니다. 이 항목은 이 다른 표에 지정된 선언 된 (허용되는) 조합을 따르지 않으므로이 동작은 매우 바람직하지 않습니다.

FIRE_OPTIONS 테이블에 적합한 제약 조건을 구현하여 특정 항목이 다른 세 테이블과 일치하지 않을 때마다 오류가 생성되도록하는 방법을 알고 싶습니다.

"데이터베이스 도구"- "관계"기능을 사용해 보았지만 TBL_1, TBL_2 및 TBL_3이 동시에있는 TBL_4간에 "참조 무결성 유지"를 수행 할 수 없었습니다.

이 문제에 대한 도움을 주시면 매우 감사하겠습니다.

** 편집

나는 기본 키 정의를 개정을 통해이 문제를 해결할 수 있었다. 이것은 아래에 자세히 설명되어 있습니다 :

TBL_1 : FIRE_CLASSIFICATION 
     PK: PK (Auto Increment) 

TBL_2 : FIRE_TYPE 
     PK: PK (Auto Increment) & FK_CLASS 

TBL_3 : FIRE_SPECIFIC 
     PK: PK (Auto Increment) & FK_CLASS 

TBL_4 : FIRE_OPTIONS 
     PK: PK (Auto Increment) 

나는 다음 "데이터베이스 도구"에서 다음과 같은 관계를 정의 - "관계"기능 :

[ERI] FIRE_CLASSIFICATION.PK (1) -> FIRE_TYPE.FK_CLASS (MANY) 
[ERI] FIRE_CLASSIFICATION.PK (1) -> FIRE_SPECIFIC.FK_CLASS (MANY) 
[ERI] { FIRE_CLASSIFICATION.PK (1) -> FIRE_OPTIONS.FK_CLASS (MANY) 
     FIRE_TYPE.PK (1)   -> FIRE_OPTIONS.FK_TYPE (MANY) 
     FIRE_TYPE.FK_CLASS (1)  -> FIRE_OPTIONS.FK_CLASS (MANY) 
     FIRE_SPECIFIC.PK (1)  -> FIRE_OPTIONS.FK_SPECIFIC (MANY) 
     FIRE_SPECIFIC.FK_CLASS (1) -> FIRE_OPTIONS.FK_CLASS (MANY) } 

ERI : "Enforce Referential Integrity" Option Selected 

답변

0

을 순간, 사이에 하나의 관계에 하나 있기 때문에 FIRE_CLASSIFICATION W FIRE_SPECIFIC 테이블의 경우, FIRE_CLASSIFICATION 테이블에 SPECIFIC C 럼을 추가 할 수 있습니다. 상황이 더욱 복잡해지면이 방법이 작동하지 않을 수 있습니다.