-2

私は、2 つの列によって互いに関連する 2 つの別個のデータベース テーブルを作成しようとして、ちょっと困っています。

私のウェブサイトには、各クラスに属する一連の目的とともに一連のクラスがあります。クラスは独自のデータベース テーブルに格納され、目標も独自のテーブルに格納されます。

ユーザーがアクティブなクラスの目標の開始日と終了日を手動で設定できるようにしたいのですが、これが発生した場合は、データベースでも更新する必要があります。私の問題は、これがどのように発生するはずなのか、データベース内のテーブルがこれをどのように処理するのかを視覚化しようとすることから生じます。これに関するすべての助けに大歓迎です。ありがとう

編集: これは私の現在のテーブル デザインです。(テーブルの作り方がまだよくわからないので、ざっくりとしたデザインを書いておきます。)

Classes
class_id | instr_id | class_name | start_date | end_date   |
1        | 1        | Class1     | 2013-05-10 | 2013-05-30 |
2        | 2        | Class2     | 2013-05-10 | 2013-05-30 | 
3        | 3        | Class3     | 2013-05-10 | 2013-05-30 |
.. and so on for each class.

Objectives
class_id | objective_id | start_date | end_date   |
1        | 1            | 2013-05-10 | 2013-05-30 |
1        | 2            | 2013-05-10 | 2013-05-30 | 
1        | 3            | 2013-05-10 | 2013-05-30 | 
2        | 1            | 2013-05-10 | 2013-05-30 | 
2        | 2            | 2013-05-10 | 2013-05-30 | 
2        | 3            | 2013-05-10 | 2013-05-30 | 
... and so on so every class has every objective_id, assuming each 
class has only 3 objectives.

これがいくつかのことを明確にするのに役立つことを本当に願っています。

4

1 に答える 1

0

2 つのリレーショナル テーブル間に多対多の関係がある場合 (ここで説明されているように、1 つの目標を多くのクラスに設定でき、各クラスは多くの目標を持つことができます)、これは通常、リンク テーブルで表す必要があります。各親テーブルとの多対 1 の関係。

ここで、リンクテーブルはobjective_assignedのようなものと呼ばれることがあります(「クラスに割り当てられた目的」の短縮形として)-次のような構造を持つ場合があります。

class_id
objective_id
start_date
end_date

- class_id と Objective_id に複合主キーを使用。

また、objective_id の主キーと目的のタイトル/名前を保持する列を持つ目的のテーブルが存在することも期待しています。

于 2013-05-10T18:06:36.313 に答える