编辑:是一个设计问题
我修订的最终ERD http://i.imgur.com/cgUC7.png
我正在接受Alevel计算的计算项目。 该项目包含一个6个表格的Microsoft访问数据库。我正在使用vb.net为学生跟踪系统编写应用程序代码。
我的ERD如下:
我的问题:如何将新的复合主键插入现有表格? 如果我在tblContact中增加StudID和CourseID,那么我需要在tblStudentCourse中增加它们,这会导致记录没有指向正确的方向..
为了强制执行关系,我将.relations与数据集一起使用。
'Student - StudentCourse
DS.Relations.Add(New DataRelation("StudStudCorRelation", DTStudents.Columns("StudID"), DTStudentCourses.Columns("StudID"), True))
'Course - StudentCourse
DS.Relations.Add(New DataRelation("CourStudCorRelation", DTCourses.Columns("CourseID"), DTStudentCourses.Columns("CourseID"), True))
StudCourseCompPK(0) = DTStudentCourses.Columns("StudID")
StudCourseCompPK(1) = DTStudentCourses.Columns("CourseID")
StudCourseContactCompPK(0) = DTContacts.Columns("StudID")
StudCourseContactCompPK(1) = DTContacts.Columns("CourseID")
StudCourseStudTMACompPK(0) = DTStudentTMAS.Columns("StudID")
StudCourseStudTMACompPK(1) = DTStudentTMAS.Columns("CourseID")
'Enforces the relations between these 2 keys
DS.Relations.Add(New DataRelation("CPKContact", StudCourseCompPK, StudCourseContactCompPK, True))
DS.Relations.Add(New DataRelation("CPKStudentTMA", StudCourseCompPK, StudCourseStudTMACompPK, True))
DS.EnforceConstraints = True
DTStudentCourses.PrimaryKey = New DataColumn() {DTStudentCourses.Columns("StudID"), DTStudentCourses.Columns("CourseID")}
但最后一行在这里:
DTStudentCourses.PrimaryKey = New DataColumn() {DTStudentCourses.Columns("StudID"), DTStudentCourses.Columns("CourseID")}
需要用来从tblStudentCourse检索密钥,我不确定todo
如果有人可以看一下这个问题,我将非常感激。
哈利
修订ERD
答案 0 :(得分:0)
如果我在tblContact中增加StudID和CourseID,那么我需要 在tblStudentCourse中增加它们会导致记录没有指向 正确的方向。
不,值只在一个表中递增。在其他任何地方,您使用这些递增的值,您基本上复制它们。
因此tblStudent.StudID可能是一个整数,每个新学生都会增加1。 tblCourse.CourseID可能是一个整数,每个课程增加1。要在tblStudentCourse中存储数据,请从tblStudent.StudID复制一个适当的现有整数,并从tblCourse.CourseID复制另一个适当的现有整数。
StudID仅在一个地方递增 - tblStudent。 CourseID只在一个地方递增 - tblCourse。