Как можно структурировать базу данных, в которой у вас есть City, State и Country, а у городов иногда есть состояния, а иногда нет?Вы бы просто положили State_ID (по умолчанию NULL) и Country_ID в City или есть лучший способ приблизиться к нему?
City
State
Country
State_ID
NULL
Country_ID
Ваш подход кажется точным.Если не существует принудительной иерархии, у вас нет большого выбора.
Когда реальный мир не соответствует нашей схеме, у нас нет другого выбора, кроме как заставить нашу схему соответствовать реальному миру.
Собираюсь принять предложенный ответ. Но просто хочу отметить, что еще один подход, не упомянутый здесь, будет City_States таблицей «многие ко многим». Это было бы особенно полезным подходом для некоторых городов, находящихся в двух штатах.
City_States
Если ваш администратор базы данных очень жестко настроен, альтернативой может быть наличие в таблице State специальных записей "Нет состояний" Вам потребуется один из них для каждого Country (по крайней мере, для каждого, в котором есть города без гражданства).