Я столкнулся с чем-то, что меня беспокоит, настолько, что я захотел приехать сюда и получить от вас, парни (et gals), своего рода «лучшие практики»
В моей модели есть таблица, назовем ее prospect
. Две отдельные внешние системы могут предоставлять обновление для строк в этой таблице, но только как «статус» этой записи в этих соответствующих системах.
Мне нужно хранить эти статусы локально. Первоначальная идея, конечно же, просто сделать два внешних ключа, которые могут обнуляться. Как то так.
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| prospect_id | int(11) | NO | PRI | NULL | auto_increment |
| ext_status_1_id | int(11) | YES | | NULL | |
| ext_status_2_id | int(11) | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
В этом примере, конечно, будут две таблицы, в которых содержатся пары идентификатор / значение для статусов.
Вот загвоздка - ext_status_2_id
будет всегда быть NULL, если ext_status_1_id
не равно 1
(именно так работают бизнес-правила).
Правильно ли я смоделировал это? Просто у меня в голове звучит этот ноющий голос, говорящий мне, что «не каждый ряд в будущем будет нуждаться в ext_status_2_id
, так что это может быть неправильно».
Если это имеет значение, это MySQL 5.0.45, и я использую InnoDB