В этом вопросе есть как философские, так и практические аспекты.
Философский вопрос: «Какая организация должна знать о статусе по умолчанию - страна или город?».Может ли страна существовать без города по умолчанию?Является ли «стандартность» атрибутом, который вы можете связать с городом?Существуют ли какие-либо другие атрибуты, которые могут относиться к отношениям между городом и деревней?
Философский вопрос имеет значение, потому что в будущем кто-то, смотрящий на эту схему, не будучи частью первоначальных разговоров, должен быть способен понять намерениебез необходимости читать документацию.
Кстати, я не знаю ответов, но стоит побеседовать с вашей командой - я считаю, что стандартное решение должно быть "делай то, что лучше всего подходит для модели предметной области".
Затем возникают некоторые практические проблемы.
Как пишет @SaadAhmad, если "город по умолчанию" является атрибутом страны, и вы хотите сделать его обязательным, запись о городе должна существовать до того, как вы создадите страну иэто невозможно, потому что «страна» является обязательным полем для «города».
Другой практический вопрос: «Как обеспечить соблюдение бизнес-правила, согласно которому страна должна иметь 1 и только 1 город по умолчанию»?Это легко, если создать «город по умолчанию» как ненулевое поле для страны, но сложно сделать так, чтобы «is_default» являлся атрибутом города - уникальный индекс для «country_id, is_default» означает, что в каждой стране может быть только один город по умолчанию,но не соблюдает правило о том, что должно быть хотя бы 1.
Итак, ответ таков:
- выяснить, что сначала говорит вам бизнес-домен.
- сделать "is_default" атрибутом города практически проще всего, потому что вам не нужно беспокоиться о городах, существующих при создании страны.
- вам приходится иметь дело с бизнес-правилом, требующим этогобыть ровно одним городом по умолчанию для каждой страны