我正在使用vb 2010 express为我的老师朋友准备一个程序。他们记录了他们的学生。我准备了一个包含名为“Mystudents”的表的数据库。它有像“studentId,Name,Surname等......”这样的列。我的问题从这里开始。每个学生在一年内参加很多课程。我必须为每个学生保留“他们参加过哪些课程”,“他们何时参加”,“在课程中完成哪个课程”。例如
Id:104 姓名:杰森 姓:黑色 等级:10A 2011年4月12日,他参加了数学课,他们做了三部曲学习 2011年4月14日,他参加了物理课,他们做了引力 ....... .......
Id:105 姓名:结婚 姓:管家 分类:11B 2011年4月2日,她参加了数学课,他们做了三部曲学习 2011年4月14日,他参加了物理课,他们做了引力 ....... ........
我的意思是我有每个数据库记录的数据列表。请停下来..?
答案 0 :(得分:1)
在关系数据库设计中,您通常会包含一个“关系表”来跟踪它:
--------------
| Student |
--------------
| 1
|
| 0..*
--------------------
| Students_Lessons |
--------------------
| 0..*
|
| 1
--------------
| Lesson |
--------------
Student
表以StudentID
为主键,Lesson
表以LessonID
为主键,Students_Lessons
表包含两列{ {1}}和StudentID
会将学生与课程联系起来。
正如您在上面的数据库设计中所看到的,LessonID
表中的每条记录都可以链接到Student
表中的零个或多个记录。 Students_Lessons
表也是如此;每条记录都可以链接到Lesson
表中的零个或多个记录。但是,Students_Lessons
表中的每条记录都必须与Students_Lessons
中的一条记录和Student
中的一条记录相关联。
如果每个学生只能参加一次课程,您可以使用其他列扩展Lesson
表以获取您需要的任何其他信息,否则最好使用其他表扩展数据模型以存储更多信息
答案 1 :(得分:0)
如果我没错,你正在寻找1-N和M-N的关系。
最好的建议是,您应该了解有关数据库设计的更多信息。您可以开始在关系数据库中搜索1-N和M-N关系。
您希望在VB中支持它,但这不是.NET范围,但它是数据库设计的事情:)
答案 2 :(得分:0)
问题是什么?
尝试记下您要存储在数据库中的所有属性/实体。基于此,您可以执行一些规范化以实现最佳的数据库结构。
例如:学生有身份证,姓名和姓氏。这些属性属于学生表。
此外;学生将学习课程。但这不是1:1的关系。因此,首先,您将获得一个表'课程',其中所有课程都已定义,之后您将获得一个StudentLessons表,其中创建课程与学生之间的链接。
答案 3 :(得分: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)
)
答案 4 :(得分: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对多”,“多对多”和“多对一”的关系将在这里帮助你。