Я соединяю сайт с изображениями. Базовая схема довольно простая 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
(будет ли это работать даже в столбце AUTO_INCREMENT
?)
Спасибо за понимание!
PS Бонус указывает на то, кто мне скажет, в случае баз данных это "индексы" или "индексы".
Продолжение : спасибо Биллу Карвину за то, что он указал на то, что оказалось синтаксической ошибкой в структуре таблицы (не устанавливайте столбец в NOT NULL
, если вы хотите, чтобы он позволял NULL
!). И как только у меня будет достаточно кармы, чтобы дать вам эти бонусные очки, я буду:)