データベースを作成していますが、データベースを使用するのはこれが初めてです。
1対1の対応について1つ質問があります。特定のスポーツのチームを表すテーブルを作成しています。
私は、すべてのチームが試合を行うアリーナを 1 つだけ持ち、すべてのチームが独自のアリーナを持つことを望んでいます。
アリーナには多くの属性 (名前、座席、チケット価格など) があるため、1 対 1 の関係を作成するベスト プラクティスはすべてを 1 つのテーブルに入れることだと読んだことがあっても、それらのテーブルを作成します。 .
アリーナとチームは 2 つの異なる概念であるため、次のように 2 つのテーブルに分割します。
Club
--------------------
ClubID (PK)
ClubName
.
.
.
ArenaID (FK)
Arena
--------------------
ArenaID (PK)
ClubID (FK)
ArenaName
Seats
TicketPrice
さらに、クラブが作成されるときにアリーナを自動的に作成するため、ArenaID を AutoIncremental ではなく、ClubID と等しくすることを考えました。それは合理的ですか?
このタイプの関係は、他の場合にも使用されるため、よく理解したいと思います (たとえば、すべてのチームには、スキルを持つアシスタント コーチが常に 1 人います)。
ありがとうございます!
編集:
@Kevin Bowersox私はゲームがどのようになるかを指定しただけでした.あなたの答えに感謝します.
@Peter Gluckアリーナはクラブの属性と考える必要がありますが、アリーナには他の独自の属性があり、データベースをより適切に整理するためにクラブテーブルから分離したいと考えています。クラブが別のアリーナを「建設」したい場合は、実際のアリーナの名前を変更するだけで、座席数とチケット価格を変更できます。ただし、データベースに保存された「オブジェクト」は同じままです。一部の列のみが変更されます。
@Branko Dimitrijevic詳細な回答をありがとう。あなたの言ったことをよりよく理解するために、いくつか質問をしたいと思います(私は今データベースを使い始めています)。最初の例では、両方のテーブルに 2 つのキーを使用せず、一方が主キーで他方が外部キーになりますが、同時に主キーと外部キーである唯一のキーを使用します。それが正しいか?そして、これら2つの選択肢の違いは何ですか? では、チーム数が少ない場合は 1 つのテーブルにまとめた方がよいとおっしゃっていますが、数万 (または数十万) のチームを持つことを望んでいます。この場合、これはテーブルを分割するのに十分な数ですか? これは、このテーブルに 1 対 1 の関係が複数あるためです。これらすべての 1 対 1 の関係を同じテーブルに入れると、非常に大きくなります。
皆さんの提案に感謝します。今度は、2 つのテーブルと 2 つの異なる ID キーでこの方法を使用してみます。しかし、私はypercubeによって提案された方法を他のテーブルで使用します!