Используя следующую компоновку таблицы:
TABLE Something
(
SomethingId
Name
DateCreated
IsObsolete ('Y','N')
PRIMARY KEY (SomethingId)
Foreign Key (SomethingTypeCode)
;
TABLE SomethingType
(
SomethingTypeCode ('1','2','3')
Description
PRIMARY KEY (SomethingTypeCode)
);
При настройке PHP / MySQL есть какой-то способ, которым я могу ограничить ограничение или индекс, который для каждого SomethingTypeCode (1, 2, 3) указан вТаблица Something, с ней может быть связан только один IsObsolete = N?
Надеюсь, это объясняет, что я пытаюсь выполнить.Я просто не знаю, что посмотреть, чтобы решить это.Я хочу, чтобы целостность данных в максимально возможной степени поддерживалась в самой базе данных, а затем распространялась на PHP.
РЕДАКТИРОВАТЬ:
В ответ напутаница, которую я получаю с ответом VoteyDisciple.
EmailTypeCode: P = Личный, B = Бизнес, S = Школа
Вот мой дизайн:
Это позволит лицу иметь более одного типа сообщений электронной почты в заданном типе (например, 2 рабочих сообщения), избежать дублирования в базе данных и не требовать нулевых значений.Так как меня интересует только одно активное электронное письмо в каждой категории (то, которое будет использоваться системой), именно здесь IsObsolete вступает в игру.Я могу хранить историю, избегать дублирования, избегать нулевых значений и обеспечивать уникальные адреса электронной почты, введенные в систему здесь.
Конечно, это также вызывает мою проблему, как указано в оригинальном вопросе.
Подход VoteyDisciple
VoteyDisciple Пожалуйста, дайте мне знать, если я изобразил это неправильно (или правильно).
«Если для данного типа может быть только один» - только один активный не время, не только один в системе.«Теперь ActiveId может быть NULL» - я подчеркнул, что я не хочу NULL"или это может указывать на конкретную запись Something."Тип определяет запись.
Вдобавок к моим ответам выше, это, кажется, добавляет сложности отмены в любые запросы.Мои ответы основаны на моем понимании того, что вы представили.Мы либо не понимаем друг друга, либо это только с моей стороны.Я ценю ваш вклад, но в представленном виде я не рассматриваю это как жизнеспособное решение.