модель проектирования базы данных - PullRequest
2 голосов
/ 09 февраля 2012

Допустим, у нас есть 3 таблицы: автомобили, люди, компании.мы хотим, чтобы владельцем машины были люди (а кто есть) или компания (а кто есть).Базовая структура таблицы Cars: Car_id, Car_model, Owner_id.Какой лучший способ сделать это?

1 Ответ

1 голос
/ 09 февраля 2012

Читая ваш вопрос я вижу два подхода:

  • Первый - это наследование: у вас есть таблица car, а также owner. owner может быть person или company с конкретными полями и отношениями.

Это несколько стратегий для реализации наследования со стандартным SQL , а также для некоторых поставщиков БД. Аналитик базы данных должен разработать лучшее решение для каждого домена дискурса и бренда базы данных.

  • Второй подход заключается в определении обоих внешних ключей в вашей таблице car.

Как это:

car_company_owner  int NULL references companies
car_person_owner   int NULL references people

затем создайте правило в базе данных, чтобы вызвать ожидаемое поведение. Например, вы можете сохранить согласованность с триггерами.

...