1

ここで属性という単語を誤用している可能性があります。

私はサービスラーニング部門のデータベースを設計しています。

私は1対多の関係について混乱しています。1つのAから多くのB
まで の関係があるとします。 上記のように1対多の関係があるようです。ここで、Aについて必要な情報は、その名前とそれに関連付けられているエンティティのリストだけです。

私はこれを考えすぎているように感じますが、多対多の関係ではなく、多対多の関係をどのように扱うかという考えを理解しています。これらの状況にどう対処するかについて、いくつかの啓蒙をいただければ幸いです。


最初の例: 一意のクラスには1学期しか関連付けられていませんが、どの学期でも多くのクラスが提供されます。

上記の例では、クラスに関するエンティティテーブルがあり、学期の列を含める必要がありますか、それとも学期のエンティティテーブルがあり、各学期に提供されるクラスを一覧表示する必要がありますか?

別の例:教授は1つの学部の一部であり、各学部は多くの教授に関連付けられています。

そのため、私は教授エンティティテーブルに学科を含めず、どの教授がどの学科に所属しているかを示すテーブルを作成することを計画していました。
しかし、私は私の読書のいずれにおいてもそのようなものを見たことがありません。

私の混乱が専門家や初心者以外の人にも明らかであることを願っています。どんな助けでも大歓迎です。

4

2 に答える 2

2

クラスと学期の問題に関しては、相互参照またはマッピングテーブルを探している可能性があります。(私も適切な用語を使用していない可能性があります!)

しかし、3つのテーブルがあると想像してください。

SEMESTER
---------
ID (int)
Year (int)
Session (nvarchar)  -- values like 01, 02, 03 or Spring, Fall, etc.

CLASS
--------
ID (int)
Name (nvarchar)
Details (nvarchar)
...

SEMESTERCLASS
-------------
ID (int)
SemesterID (int)
ClassID (int)

したがって、SemesterClassテーブルはSemesterをClassにマップします。このように、独自のクラスを複数の学期の一部にすることができ、1学期に複数のクラスを含めることができます。

うまくいけば、これはあなたが探しているものです。うまくいけば、これがお役に立てば幸いです。

于 2013-03-21T20:58:29.347 に答える
0

多対多の関係は、1 つの「リンク テーブル」に結合する 2 つの 1 対多の関係と同じです (デビッドの例では semesterclass)。Oracle などの多くのデータベース ソフトウェアは、多対多の関係を作成するときに「リンク テーブル」を作成します (通常、見苦しい名前が付いています!)。

于 2013-03-21T21:05:44.127 に答える