复合主键 - 使用更新命令。如何增加

时间:2012-04-02 18:04:08

标签: vb.net ms-access

编辑:是一个设计问题

我修订的最终ERD http://i.imgur.com/cgUC7.png

我正在接受Alevel计算的计算项目。 该项目包含一个6个表格的Microsoft访问数据库。我正在使用vb.net为学生跟踪系统编写应用程序代码。

我的ERD如下: http://i.imgur.com/Xl0gS.png

我的问题:如何将新的复合主键插入现有表格? 如果我在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

enter image description here

1 个答案:

答案 0 :(得分:0)

  

如果我在tblContact中增加StudID和CourseID,那么我需要   在tblStudentCourse中增加它们会导致记录没有指向   正确的方向。

不,值只在一个表中递增。在其他任何地方,您使用这些递增的值,您基本上复制它们。

因此tblStudent.StudID可能是一个整数,每个新学生都会增加1。 tblCourse.CourseID可能是一个整数,每个课程增加1。要在tblStudentCourse中存储数据,请从tblStudent.StudID复制一个适当的现有整数,并从tblCourse.CourseID复制另一个适当的现有整数。

StudID仅在一个地方递增 - tblStudent。 CourseID只在一个地方递增 - tblCourse。