私はこの単純なテーブルを持っています:
テーブルUsers
userId | name
---------------------
1 'a1'
2 'a2'
3 'a3'
4 'a4'
5 'a5'
テーブルCities
cityId | name
---------------------
1 'c1'
2 'c2'
3 'c3'
4 'c4'
5 'c5'
各ユーザーは、複数 の都市にいることができます。:
したがって、マッピングテーブルは次のとおりです。
userId | CityId
------------------------------------
1 4
1 4
1 4
2 5
5 6
テーブルusers
は名前によって頻繁にスキャンされます。
質問 :
マッピングテーブルについては問題ありません。両方の列を合わせて、プライマリ/クラスター化インデックスです。
しかし、私は最初の2つのテーブルについて苦労しています:
userId
ユーザーは主キーとして列を持つべきだと思います。なぜ ?これは、マッピング テーブルへの結合を通じて使用されるためです。- ただし、このテーブルは名前で頻繁にスキャンされるため、名前列にクラスター化インデックスも必要です。
(固有の問題は脇に置いておきます。すべての列が固有であるとしましょう)
この場合のベストプラクティスの決定は何ですか?