Что и когда является лучшим способом использовать FK, не получая FK «избыточность».
Допустим, у меня есть три таблицы Account, Category и Product.
1: таблица счетов
Определение:
- Id, Первичный BigInt
- Имя, Варчар
2: Таблица категории
Определение:
- Id, Первичный BigInt
- AccountId, BigInt ForeignKey
- Имя, Varchar
3: Табличный продукт
Определение:
- Id, Основной BigInt
- AccountId, BigInt ForeignKey - "черная овца"
- CategoryId, BigInt ForeignKey
- Имя, Varchar ... и т. Д.
Мой вопрос (так как я не администратор БД): неужели плохо или глупо использовать FK AccountId для таблицы Product, когда я знаю, что мой FK CategoryId указывает на таблицу, в которой содержится тот же FK?
Я просто думаю, исходя из принципа СУХОЙ.
Почему мне интересно, скажем, я хочу получить все продукты для учетной записи x . Если у меня нет идентификатора учетной записи FK для продукта, мне всегда нужно присоединиться к таблице категорий, чтобы получить все продукты для учетной записи x . Полагаю, это может быть хитом производительности.
Если у вас есть мнение, а я имею в виду ЛЮБОЕ мнение по этому вопросу. Пожалуйста, буквально УБИВАЙТЕ эту ветку, написав свою точку зрения на то, как, по вашему мнению, следует использовать FK.
Спасибо!
Robin