Внешний ключ MySQL, чтобы разрешить NULL?


я собираю вместе изображение веб-сайта. Базовая схема довольно проста MySQL, но у меня возникли некоторые проблемы с попыткой представить возможные флаги администратора, связанные с изображением ("неуместно", "защищено авторским правом" и т. д.). Мое нынешнее представление таково:

tblImages (
    imageID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ...
);

tblImageFlags (
    imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    imageID INT UNSIGNED NOT NULL,
    flagTypeID INT UNSIGNED NOT NULL,
    resolutionTypeID INT UNSIGNED NOT NULL,
    ...
);

luResolutionTypes (
    resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    resolutionType VARCHAR(63) NOT NULL,
    ...
);

(усеченный для удобства чтения; различные внешние ключи и индексы в порядке, я клянусь)

tblImageFlags.flagTypeID имеет внешний ключ в таблице поиска типов флагов, и, как вы можете себе представить tblImageFlags.resolutionTypeID должны быть внешним ключом на luResolutionTypes.resolutionTypeID. Проблема заключается в том, что при первом выпуске флага нет логического типа разрешения (я бы объявил это хорошим использованием NULL); однако, если значение задано, оно должно быть внешним ключом к таблице подстановки.

Я не могу найти обходной путь синтаксиса MySQL для этой ситуации. Существует ли она? Лучшие бегуны вверх являются:

  • добавить" немодерируемый " тип разрешения
  • добавить NULL запись luResolutionTypes.resolutionTypeID (это даже работать в ?)

Спасибо за понимание!

PS бонусные баллы тому, кто говорит мне, является ли, в случае баз данных, это "индексы" или "индексы".


следовать-вверх: спасибо Биллу Карвину за указание на то, что оказалось синтаксической ошибкой в структуре таблицы (не устанавливайте столбец в NOT NULL если вы хотите, чтобы NULL!). И как только у меня будет достаточно кармы, чтобы дать вам их бонусные очки, я буду :)

1 64

1 ответ:

Вы можете решить эту проблему, позволяя NULL в столбце внешний ключ tblImageFlags.resolutionTypeID.


PS бонусные баллы тому, кто говорит мне, является ли, в случае баз данных, это "индексы" или "индексы".

множественное число индекс должно быть индексы.

по данным "Современное Американское Использование " Брайан А. Гарнер:

для обычных целей, индексы is этот предпочтительнее множественное число, а не показатели. ... показатели, хотя и менее претенциозно, чем форумах или догматов, претенциозно все же. Некоторые писатели предпочитают показатели in технические контексты, как в математике и науки тоже. Хотя и не самый лучший множественное число для индекс,показатели is допустимые в смысле "показатели"." ... Избегайте единственного числа indice, задняя формация от множественное число показатели.