Я пытаюсь обойти отсутствие Postgresql 8.4 MATCH PARTIAL
. У меня есть следующая схема: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)
Теперь, что я хочу, это соединение FOREIGN KEY
, что REFERENCES
в vehicles
таблицу, таким образом, что она требует lot_id
и vin
существовать в vehicles
таблицы или ограничения целостности на pictures
столе выходит из строя. Проблема в том, что эта функциональность доступна только в MATCH PARTIAL
, которая не реализована. Есть ли другой способ легко получить этот эффект? До текущей итерации схемы мой стол для транспортных средств имел бы столбцы для каждого источника. automated_make
override_make
vin_decode_make
Это было беспорядок. Но, он появляется без MATCH PARTIAL
Мне придется сделать большие изменения, чем я изначально планировал.
Я думаю, мне нужно будет сохранить два соединения indexes
, чтобы достичь этого.
[index]
lot_id, vin
primary key (lot_id vin)
Возможно переименование [vehicles]
к [sources]
в процессе; и затем заставляя [vehicles]
и [pictures]
- MATCH FULL
против этих избыточных таблиц PRIMARY KEY
.
Автомобиль уникально идентифицирован вин, но строки в моем столе не имеют никакого отношения к «транспортным средствам в реальном мире», они имеют отношение к «транспортным средствам на сайтах», и есть корпоративные сайты и другие законные причины, по которым автомобили дублируются через lot_ids. Если у кого-то есть автомобиль на много и продает его на другой лот - вы думаете, что фотографии должны переноситься? Даже если этот автомобиль сидит перед вывесками вашего соревнования?В конечном счете, я могу доверять всему, что знаю о транспортном средстве, когда он появляется на другой лотерее. Он должен потерять всю свою историю. –
Да, плохая модель. У вас есть транспортные средства, партии и фотографии. Таким образом, у вас есть таблица транспортных средств, первичный ключ vin, таблица лотов с первичным ключом lot_id и множество таблиц, содержащих комбинации транспортных средств и лотов. Затем сделайте таблицу изображений ссылкой на эту таблицу. – MkV