0

我正在使用 vb 2010 express 为我的老师朋友准备一个程序。他们保留有关学生的记录。我准备了一个数据库,其中包含一个名为“Mystudents”的表。它有像 "studentId , Name, Surname, etc.." 这样的列。我的问题从这里开始。每个学生在一年中都会参加很多课程。我必须为每个学生保留“他们参加了哪些课程”、“他们何时参加”、“课程中完成了哪些主题”。例如

ID:104 姓名:Jason 姓氏:Black 班级:2011 年 4 月 12 日的 10A 他参加了数学课,他们在 2011 年 4 月 14 日做三角学 他参加了物理课,他们做重力............

ID:105 姓名:Marry 姓氏:管家 班级:11B 于 2011 年 4 月 2 日她参加了数学课,他们在 2011 年 4 月 14 日做三角学 他参加了物理课,他们做重力............ .

我的意思是我有每个数据库记录的数据列表。请阻止我..?

4

5 回答 5

1

在关系数据库设计中,您通常会包含一个“关系表”来跟踪这一点:

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

表作为主键,Student表作为主键,表包含两列,将学生链接到课程。StudentIDLessonLessonIDStudents_LessonsStudentIDLessonID

正如您在上面的数据库设计中看到的,表中的每条记录Student都可以链接到表中的零个或多个记录Students_LessonsLesson桌子也是如此;每条记录都可以链接到Students_Lessons表中的零个或多个记录。但是,Students_Lessons表中的每条记录都必须与 中的一条记录和 中的Student一条记录链接Lesson

如果每个学生每节课只能上一次,您可以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、name 和 surname。这些属性一起属于学生表。

更远; 学生将跟随课程。但这不是一对一的关系。因此,首先您将获得一个表“课程”,其中定义了所有课程,然后您将获得一个 StudentLessons 表,其中创建了课程和参加的学生之间的链接。

于 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

谷歌数据库设计的东西,如“正常形式”、“一对多”、“多对多”和“多对一”关系将在这里为您提供帮助。

于 2011-04-26T08:59:52.930 回答