【发布时间】:2017-02-02 00:22:49
【问题描述】:
基本上我有两个表,Teachertbl 主键为TeacherID,TeacherBlobtbl 和TeacherID 与TeacherTbl 相关,还有一个XML 列TeacherBLOB。
TeacherBLOB XML 数据包含教师数据,例如他们的班级和学生。
表的架构如下所示:
TeacherTbl:
TeacherID int PRIMARY KEY
-- Other columns
TeacherBlobTbl:
TeacherID int FOREIGN KEY REFERENCES TeacherTbl (TeacherID)
TeacherBlob xml
TeacherBlob 中的 XML 示例如下所示:
<Teacher>
. . .
<TeacherClass>
<FormRoom> Room A</FormRoom>
<TotalStudents> 25 </TotalStudents>
<Subject> Mathematics </Subject>
<Student>
<StudentName> James </StudentName>
<StudentAge> 15 </StudentAge>
<StudentAddress> </StudentAddress>
</Student>
</TeacherClass>
</Teacher>
基本上我想获得TeacherClass 和Student 并将它们移动到自己的表中。我想抓取TeacherClass,它的数据到一个新表中,外键与TeacherTbl 相关。
除此之外,我还想获取与StudentClass 关联的每个Student,并将其移动到它自己的表中,并使用与TeacherClass 相关的外键。
注意:我不想将Teacher移动到自己的表中,我只关心TeacherClass和Student。
它应该如下所示:
TeacherClasstbl:
TeacherClassID int PRIMARY KEY
FormRoom VARCHAR(50)
TotalStudents int
Subject VARCHAR(100)
TeacherID int FOREIGN KEY REFERENCES TeacherTbl(TeacherID)
学生:
StudentID int PRIMARY KEY
StudentName VARCHAR(50)
StudentAge int
StudentAddress VARCHAR(100)
TeacherClass int FOREIGN KEY REFERENCES TeacherClassTbl(TeacherClassID)
还值得注意的是,并非每个 XML Teacher 都会有一个关联的 TeacherClass 元素,并且该解决方案需要满足传入 TeacherBlobTbl 的新数据。
请告诉我可以用来实现此目的的任何工具/技术。
我想过做一个按计划运行的存储过程,不确定是否有更好的解决方案。
谢谢!
【问题讨论】:
-
一个学生在多个班级的情况如何处理?您想如何分配教师 ID 和学生 ID?
-
我可以在学生和班级之间建立一个多对多的关系。 Teacher和Student不会直接关联,Student可以通过TeacherClass获取,TeacherClass可以通过Teacher获取。
-
我会为此使用 SQL Server 集成服务。它具有处理 xml 数据的任务,以及用于更复杂场景的纯 c# 代码
标签: c# sql-server xml database stored-procedures