0

vb 2010 Express を使用して、先生の友人のためにプログラムを準備しています。彼らは生徒についての記録をつけています。「Mystudents」という名前のテーブルを含むデータベースを用意しました。"studentId , Name, Surname, etc.." のような列があります。私の問題はここから始まります。各学生は、年間を通じて多くのレッスンに参加します。「どのレッスンに参加したか」、「いつ参加したか」、「レッスンでどのトピックを行ったか」を生徒ごとに記録する必要があります。例えば

ID: 104 名前: ジェイソン 姓: 黒 クラス: 10A 2011 年 4 月 12 日に彼は数学のレッスンに参加し、彼らは三角法を行いました 2011 年 4 月 14 日に彼は物理学のレッスンに参加し、彼らは重力を行いました ....... .......

Id: 105 名前: Marry 姓: Steward Class: 11B on 02.04.2011 彼女は数学の授業に出席し、彼らは三角法を行います 14.04.2011 彼は物理学の授業に出席し、彼らは重力を行います ....... ....... .

データベースの各レコードのデータのリストがあることを意味します。私を半分にしてください..?

4

5 に答える 5

1

リレーショナル データベースの設計では、通常、これを追跡するために「リレーション テーブル」を含めます。

   --------------
   |  Student   |
   --------------
         | 1
         |      
         | 0..*
--------------------
| Students_Lessons |
--------------------
         | 0..*
         |
         | 1
   --------------
   |   Lesson   |
   --------------

Studentテーブルには主StudentIDキーがあり、LessonテーブルにはLessonID主キーがあり、Students_Lessonsテーブルには2つの列が含まれており、StudentID学生LessonIDをレッスンにリンクします。

上記のデータベース設計でわかるように、テーブル内の各レコードは、Studentテーブル内の 0 個以上のレコードにリンクできStudents_Lessonsます。同じことがLessonテーブルにも当てはまります。各レコードは、Students_Lessonsテーブル内の 0 個以上のレコードにリンクできます。ただし、テーブル内の各レコードは、 内の1 つのレコードとStudents_Lessons内の 1 つのレコードにリンクする必要があります。StudentLesson

各生徒が各レッスンに 1 回だけ参加できる場合Students_Lessonsは、必要なその他の情報用に追加の列を使用してテーブルを拡張できます。それ以外の場合は、より多くの情報を格納するための追加のテーブルを使用してデータ モデルを拡張することをお勧めします。

于 2011-04-26T08:59:41.200 に答える
0

私が間違っていなければ、あなたは 1-N と MN の関係を探しています。

最良の提案は、データベースの設計についてもっと学ぶことです。リレーショナル データベースにおける 1-N および MN 関係とは何かを調べ始めることができます。

VBでそれをサポートしようとしていますが、これは.NETの範囲外ですが、データベース設計の問題です:)

于 2011-04-26T08:56:15.893 に答える
0

質問は何ですか?

データベースに保存したいすべてのプロパティ/エンティティを書き留めてみてください。それに基づいて、最適なデータベース構造を実現するために正規化を実行できます。

例: 学生は ID、名前、姓を持っています。これらのプロパティは、学生テーブルにまとめて属します。

さらに遠く; 生徒はレッスンに従います。しかし、これは 1 対 1 の関係ではありません。最初に、すべてのレッスンが定義された「レッスン」テーブルを取得します。その後、レッスンと出席した学生との間のリンクが作成される StudentsLessons テーブルを取得します。

于 2011-04-26T08:56:44.553 に答える
0
CREATE TABLE student
        (
        id INT NOT NULL PRIMARY KEY,
        firstName NVARCHAR(200),
        lastName NVARCHAR(200),
        )

CREATE TABLE subject
        (
        id INT NOT NULL PRIMARY KEY,
        subjectName NVARCHAR(200)
        )

CREATE TABLE class
        (
        id INT NOT NULL PRIMARY KEY,
        subjectId INT NOT NULL
                FOREIGN KEY
                REFERENCES subject,
        classDate DATE,
        topic NVARCHAR(200)
        )

CREATE TABLE student_class
        (
        studentId INT NOT NULL
                FOREIGN KEY
                REFERENCES student,
        classId INT NOT NULL
                FOREIGN KEY
                REFERENCES class,
        PRIMARY KEY (studentId, classId)
        )
于 2011-04-26T08:56:44.550 に答える
0

私は3つのテーブルを使用します。

students

student_id    student name .. etc ..
1             jane doe
2             jack dee


lessons

lesson_id    lesson_name   .. etc..
1            gravity 101
2            hard maths
3            hampsters  

student_lessons

student_id    lesson_id
1             1
1             2
1             3

ここでは、「標準形」、「1 対多」、「多対多」、「多対 1」の関係などの Google ing データベース設計が役立ちます。

于 2011-04-26T08:59:52.930 に答える