У меня есть база данных Oracle с тремя таблицами:Как сделать ссылочную целостность?
Table1: Vehicle
- ID
- Тип
- Item
TABLE2: Car
- ID
- Марка
Таблица3: Bus
- ID
- Номер шины
В таблице 1:
- , если тип транспортного средства
Car
, я хочу колонкуItem
для храненияID
отCar
стол; - если тип автомобиля
Bus
, я хочу колонкуItem
для храненияID
отBus
стол;
Это создает проблему при связывании таблиц с внешними ключами ограничений, потому что если, например, я выбираю автомобилей ID в автомобиле таблицы, что не существует в Bus Таблицы, Oracle вызовет ошибку.
Что я делаю на самом деле, я обрабатывать таблицы без каких-либо отношений, но я столкнулся риск несоответствия данных, в случае строки из таблиц Bus или автомобилей будут удалены.
У кого-нибудь есть идеи, пожалуйста?
Вы не можете иметь внешний ключ, который ссылается на одну таблицу один раз, а другую таблицу в другом случае. Решение будет состоять в том, чтобы на вашей базовой таблице были «CarID» и «BusID», каждый из которых ссылался либо на таблицу «Car», либо на «Bus», и убедиться, что только один может быть чем-то иным, чем NULL в любой момент времени. –