나는 MATCH PARTIAL
의 PostgreSQL 8.4의 부족함을 해결하려고합니다. 나는 다음과 같은 스키마가 : 이제Postgresql MATCH PARTIAL이 (가) 해결 되나요?
[vehicles]
lot_id | vin | source | year | make | model ...
primary key (lot_id, vin, source)
[pictures]
picture_id | lot_id | vin | url | sha1 ...
primary key (picture_id)
을, 내가 원하는 것은이 pictures
테이블에 vehicles
테이블 또는 무결성 제약 조건에 존재하는 lot_id
및 vin
을 요구하도록의 vehicles
테이블을 REFERENCES
그 화합물 FOREIGN KEY
입니다 실패합니다. 문제는이 기능이 구현되지 않은 MATCH PARTIAL
에서만 사용 가능하다는 것입니다. 이 효과를 쉽게 얻을 수있는 다른 방법이 있습니까? 현재 스키마 반복 전에 내 차량 테이블에는 각 소스에 대한 열이 있습니다. automated_make
override_make
vin_decode_make
이것은 엉망이되고있었습니다. 그러나, 그것은없이 나타납니다 MATCH PARTIAL
나는 원래 의도했던 것보다 더 큰 변화를 만들어야 할 것입니다.
이것을 달성하려면 두 개의 화합물을 보관해야 할 것 같습니다. indexes
[index]
lot_id, vin
primary key (lot_id vin)
아마 그 과정에서 [sources]
에 [vehicles]
이름을 변경; 이 초과 테이블의 PRIMARY KEY
에 대해 [vehicles]
과 [pictures]
을 MATCH FULL
으로 강제합니다.
차량은 vin으로 고유하게 식별되지만 테이블의 행은 '실제 세계의 차량'과 관련이 없으며 '웹 사이트의 차량'과 관련이 있으며 기업 사이트 및 기타 합법적 인 lot_ids에 걸쳐 중복 된 차량을 갖게 된 이유. 누군가 많은 차량을 가지고 다른 많은 차량에 파는 경우 - 사진이 계속 이어져야한다고 생각하십니까? 그 차량이 당신 경마장 표지판 앞에 앉아 있더라도?궁극적으로, 나는 그것이 다른 로트에 나타나면 내가 차량에 관해 안다라고 생각하는 무엇이라도 신뢰할 수있다. 그것은 그 모든 역사를 잃어 버려야한다. –
예, 불량 모델입니다. 당신은 차량, 사진 및 그림이 있습니다. 따라서 차량 테이블, 기본 키 빈, 기본 키가 lot_id 인 로트 테이블, 차량 및 로트의 조합을 포함하는 다 대다 테이블의 테이블이 있습니다. 그런 다음 사진 테이블 참조 테이블을 만듭니다. – MkV