小さな共有データを持つ垂直階層内の複数のテーブルのベスト プラクティスを探しています。3 つのテーブルがあるとします。
Country {
id
}
State {
id,
country_id,
FK_to_country_id,
}
City {
id,
state_id,
FK_to_state_id,
}
上記の状態は国に属しますが、都市は州に属し、国にも属します。スキーマはきれいに見えますが、都市が属する国を調べたい場合は、3 つのテーブルで JOIN を使用する必要があります。市に属する郡という別の階層がある場合、状況はさらに悪化します。
City {
id,
country_id,
state_id,
FK_to_country_id,
FK_to_state_id,
}
City に別の列 'country_id' を追加すると、面倒な JOIN から解放されますが、データベース スキーマは少し重複します。
実社会での実践とは?