我正在为具有少量共享数据的垂直层次结构中的多个表寻找最佳实践。假设三个表:
Country {
id
}
State {
id,
country_id,
FK_to_country_id,
}
City {
id,
state_id,
FK_to_state_id,
}
在上述状态属于国家,而城市属于国家,结果也属于国家。该模式看起来很干净,但是当您想查找一个城市属于哪个国家/地区时,您必须使用包含三个表的 JOIN。如果有另一个属于城市的称为县的层级,情况会变得更糟。
City {
id,
country_id,
state_id,
FK_to_country_id,
FK_to_state_id,
}
在 City 中添加另一列 'country_id' 可以让我们从繁琐的 JOIN 中解放出来,但数据库模式会有些重复。
现实世界的实践是什么?