Можно ли создавать внешние ключи, которые на самом деле не являются внешними ключами в базе данных? - PullRequest
1 голос
/ 12 сентября 2011

У меня есть эта фиктивная база данных:

пользователи:

  • userid

компании:

  • company_id
  • user_id

франшизы:

  • franchise_id
  • company_id

магазины:

  • store_id
  • franchise_id

Это все первичные ключи ивнешние ключи.

Что я хочу знать, если это плохая практика, делать такие вещи, как положить user_id в таблицу франшиз.

Таким образом, я могу составлять отчеты без каких-либо отношений, а также в случае, если что-то «теряется», я могу выяснить, куда это идет.Это не внешние ключи, определенные в базе данных, но они выглядят как внешние ключи.Или я должен сделать их внешними ключами?

Спасибо за ваш ввод.

edit: Я также подумал, что денормализация, как я думал, может помочь ускорить процесс, не используя всеприсоединяется.

Ответы [ 2 ]

6 голосов
/ 12 сентября 2011

То, о чем вы говорите, - это плановая денормализация данных. Возможно, вам лучше создать представления для отчетов, которые обращаются к таблицам. Таким образом, вам не нужно изменять таблицы и их целостность (или хранить избыточность), но вы все равно можете использовать ассоциации в отчетах.

3 голосов
/ 12 сентября 2011

Я вижу, что ты делаешь.Для меня то, что у вас есть в настоящее время, прекрасно;Вам не нужно добавлять дополнительное поле 'user_id' для франшизы.Поскольку пользователь имеет отношение к компании, а компания имеет отношение к франшизе;у пользователя есть подключение к франшизе.

Возможно, вы захотите создать представление, чтобы показать все, вместо добавления дополнительного поля в таблицу.

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