编辑:是一个设计问题复合主键 - 使用更新命令。如何增加
我的最终修订ERD http://i.imgur.com/cgUC7.png
我经历了ALEVEL计算的计算项目。该项目由一个6表格Microsoft Access数据库组成。我正在使用vb.net为学生跟踪系统编写应用程序。
我ERD低于:
我的问题:如何插入一个新的复合主键到现有的表? 如果我增加StudID和CourseID在tblContact然后我需要增加他们在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这我不确定什么待办事项
如果任何人都可以在这个问题看看钥匙我会很感激。
哈利
修订ERD
我认为如果您添加作业标签并减少添加复合键,*小*代码以显示意愿以及某些表格模式,您将有更好的答复机会。 – Fionnuala 2012-04-03 11:14:00
为什么你在tblContact中获得CourseID?如果联系人仅与学生课程组合相关,那么必须在联系人有关之前创建学生课程?如果联系人仅与学生有关,则不需要课程编号。在学生课程表上可能需要考虑自动编号。我认为你的问题可能是由于设计问题,所以可能值得在设计上发布一个问题。 – Fionnuala 2012-04-03 22:00:36
'你为什么要在tblContact中获得CourseID?'因为我认为我需要强制执行tblStudentCourse和tblContact之间的一对多关系,除非我需要使用另一个外键? – Apple 2012-04-04 10:44:36