Нулевой внешний ключ - PullRequest
       5

Нулевой внешний ключ

4 голосов
/ 17 декабря 2009

новичок здесь.

У меня есть 3 таблицы, а именно продукт, категория и подкатегория. Я настроил их отношения так:

Товар из категории: Многие ко многим
Продукт в подкатегории: один на один
Подкатегория для категории: Многие-к-одному

Я добавил столбец subcategory_id, который является внешним ключом в таблице продуктов (для отображения таблиц продуктов и подкатегорий). Это работает, если товар имеет подкатегорию. Теперь проблема в том, что у меня есть продукты, у которых нет подкатегории. Предполагается, что столбец subcategory_id будет нулевым, но это не разрешено. Есть ли обходной путь для этого? Я также думаю, что конфигурация отношений как-то связана с этим. Есть мысли?

Ответы [ 3 ]

4 голосов
/ 17 декабря 2009

Пока subcategory_id имеет значение null, вы должны иметь возможность добавлять внешний ключ, который будет обеспечивать целостность отношений во всех случаях, когда столбец не равен NULL. Это довольно распространенный вариант использования.

1 голос
/ 17 декабря 2009

Продукт в подкатегории: один на один

Разве это не должно быть Продукт в подкатегории: Много-к-одному

А почему нельзя сделать столбец subcategory_id default null?

0 голосов
/ 17 декабря 2009

Продукт в категории: многие ко многим

Товар в подкатегории: один на один

Подкатегория для категории: многие-к-одному

Это не имеет смысла. Если товар и подкатегория один к одному, то это один и тот же объект. Или они один к 0/1?

В любом случае, в любом случае, если они от одного к одному или от одного до нуля или одного, то каждый продукт относится к разной подкатегории, и каждая подкатегория имеет не более одного продукта, назначенного ему. Если это так, то не может быть так, чтобы продукты были один-ко-многим в категории, а подкатегории - один-ко-многим в категории.

Подумай об этом. Если a может быть много категорий для одного продукта, но только одна подкатегория для продукта, тогда может быть много категорий для подкатегории, что противоположно тому, что вы имеете в качестве количества элементов для категории и подкатегорий: от одной до многих

Обычно отношения для категорий продуктов и подкатегорий следующие:

От категории к подкатегории один ко многим (много подкатегорий на категорию - только одна категория на подкатегорию)

Подкатегория для продукта: один ко многим, в каждой подкатегории может быть много продуктов. но каждый товар находится в одной подкатегории.

Вы уверены, что это не ваша структура? ...

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