У меня недостаточно информации, чтобы сказать, плохой дизайн или нет.
Для меня это звучит как стандартные отношения один ко многим.
Вас огорчают два разных значения в столбце CHILD
, который ссылается на MASTER
. Это звучит как обычный способ представления для меня обнуляемого внешнего ключа. Это говорит о том, что вы можете иметь строку CHILD
, которая не принадлежит ни одной строке MASTER
. В качестве примера можно привести базу данных для школы, которая присваивает одну или несколько строк STUDENT
строке SCHOOL
.
Ссылка из таблицы STUDENT
может быть нулевой; в конце концов, мы не убиваем / не удаляем STUDENT
, кто не назначен в школу, не так ли?
Я бы спросил, почему это не делается с нулевыми значениями. Вы уверены, что не видите, как ваша база данных представляет ноль? Если кто-то изобрел свой собственный способ сделать это и обошел нулевым из-за преднамеренности или невежества, то назовите это плохим замыслом.
Обе таблицы должны иметь первичные ключи. Лучше всего, если столбец MASTER, на который ссылается CHILD, является первичным ключом таблицы MASTER. Если нет, назовите это плохим дизайном.
ОБНОВЛЕНИЕ: я могу вспомнить одну историческую причину, которая могла бы объяснить это.
Более старые версии MySQL не обеспечивали ссылочную целостность, пока не появился механизм ISAM. Возможно, ваша схема была разработана до ISAM, поэтому разработчики решили, что им придется самостоятельно управлять ссылочной целостностью. Если вы обновились до ISAM, возможно, схема не была перенесена вместе с ней.
Пожалуйста, игнорируйте эту идею, если мои предположения об истории неверны.