2

私はクライアントのためにローイングレポートと統計システムを作成しています。現在、次のような構造になっています。

-----------------------------------------------------------------------------
| ID | Team     | Coaches    | Rowers     | Event     | Position | Time     |
-----------------------------------------------------------------------------
| 18 | TeamName | CoachName1 | RowerName1 | EventName | 1        | 01:32:34 |
|    |          | CoachName2 | RowerName2 |           |          |          |
|    |          |            | RowerName3 |           |          |          |
|    |          |            | RowerName4 |           |          |          |
-----------------------------------------------------------------------------

これはデータの行の例ですが、これをRowersテーブルやCoachesテーブルなどに拡張したいのですが、これをエントリテーブルにリンクする方法がわかりません。

誰かが私と共有できる知恵の言葉を持っていますか?

アップデート

チームは任意の数のコーチと漕ぎ手を持つことができ、漕ぎ手は多くのチーム(チームA、B、Cなど)に属することができ、チームは多くのコーチを持つことができます。

4

5 に答える 5

2

チーム、コーチ、漕ぎ手(スケールしたいスポーツの種類が複数ある場合は、アスリート)とイベント用に別々のテーブルを使用します。

チーム

TeamID

コーチ

CoachID

漕ぎ手

RowerID

イベント

EventID TeamID RowerID

関係をさらに定義する他の多くの質問があります。たとえば、エントリ(イベント)を定義するものは何ですか。1セットの漕ぎ手と1つのコーチPERイベントですか?イベントごとの漕ぎ手のセットごとに複数のコーチ?チームはありますか?チームを構成するものは何ですか?

私はそのような質問をするでしょう...

于 2009-08-10T17:22:46.433 に答える
1

リンクテーブルの一種?複数の漕ぎ手とコーチを 1 つのチームにマッピングするにはどうすればよいですか?

これは私の提案です( Optimal Solutionsの回答に基づく):

チーム チーム
IDチーム

コーチ コーチ
IDコーチ

Rower
RowerID
RowerName

イベント
EventID
位置
時間

  1. 定義済みのチームが必要な場合:

CoachTeamLink ( と の間のCoachsリンクTeams)
TeamID
CoachID

RowerTeamLink ( と の間のRowersリンクTeams)
TeamID
RowerID

EventTeamLink ( と の間のEventsリンクTeams)
TeamID
EventID

  1. または、そうでない場合:

EventCoachLink ( と の間のEventsリンクCoachs)
EventID
CoachID

EventRowerLink ( と の間のEventsリンクRowers)
EventID
RowerID

于 2009-08-11T18:15:59.317 に答える
0

あなたが投稿したのは「エントリテーブル」だと言いますが、このテーブルはあまり意味がなく、少なくとも(1行、しゃれは意図されていません)=(1つの事実または事柄)の観点からは意味がありません。

テーブルの行の1つは、(NULL、NULL、NULL、RowerName3、NULL、NULL、NULL)です。どういう意味ですか?CoachName2のコーチは何ですか?等々。

それとも、これはエントリテーブルの「1行」ですか?もしそうなら、それは良いSQLテーブルではありません。なぜなら、(たとえば)単一の行と列の共通部分に行のリストがあり、「行のリスト」はデータ型の適切な選択ではないからです。

一部のデータだけを見ると、データベースを正規化する方法を言うことは不可能です。データがモデル化するビジネスでデータが何を意味し、表すかを知る必要があります。

そうは言っても、少なくともあなたがのために別々のテーブルを必要としているように私には見えます

チームは漕ぎ手のイベントをコーチします

次に、「漕ぎ手は正確に1つのチームに属している」、「チームには少なくとも1人のコーチがいて、複数のチームのコーチはいない」などのビジネスシナリオの側面を表す必要があります。

これを見てエントリが何であるかはわかりませんが、エントリのテーブルも必要になる可能性があります。たぶん、私が漕ぐことについて知っていれば、それはもっと理にかなっているでしょう。

于 2009-08-10T17:31:14.590 に答える
0

私は次のテーブルを持っているでしょう:

チーム:ID、TeamNameコーチ:ID、CoachName、TeamID Rower:ID、RowerName、TeamID

次に、イベントテーブルに次のようにデータが入力されます。

イベント:ID、TeamID、CoachID、RowerID、EventName、Position、Time

非正規化されたデータをクエリに表示する場合は、次のように作成します。

SELECT E.ID, T.TeamName, C.CoachName, R.RowerName, E.EventName, E.Position, E.Time
FROM Event E
INNER JOIN Team T
ON E.TeamID = T.ID
INNER JOIN Coach C
ON E.CoachID = C.ID
INNER JOIN Rower R
ON E.RowerID = R.ID
于 2009-08-10T17:31:49.317 に答える
0

私はこのようなことを試してみます::

チーム
  ID
  名前


漕ぎ手
  ID
  名前
  team_id 参照チーム (id)

コーチ
  ID
  名前
  team_id REFERENCES チーム (id)

イベント
  ID
  名前
  開始時間
  長さ

event_teams
  event_id はイベント (id) を参照します
  team_id はチーム (id) を参照します
  位置
于 2010-03-22T19:19:09.277 に答える