实施"一对多"与DataSet的关系

时间:2014-08-17 11:48:26

标签: c# sql database ado.net dataset

我有两个表,一个包含患者信息,另一个包含每个患者的注释。 (一名患者,患者的许多注意事项)。

鉴于此,在Designer中(通过右键单击所选的DataSet可以访问),如何创建一对多关系?我以前从未这样做过。

其次,对于患者注释表,如何使用SQL语法向患者记录添加注释?注意,这是更新现有的,但是使用唯一的患者ID号作为参考,将全新的一个添加到patientNotes表中(因此只有该特定患者添加了该注释,而不是他们其他人。)

1 个答案:

答案 0 :(得分:1)

从技术上讲,你不需要做任何事情来创建一对多的关系。您只需要设置两个表,并在打算使用它们时使用它们。我从事数据仓库工作,不幸的是,我们之间的很多关系都没有通过任何关键或约束来形式化。

正确的方法是在patientNotes表上的患者ID列上实现外键约束。如果患者表中存在患者ID,则FK仅允许您将数据插入到患者注释中。如果您尝试在表格中插入一条患者ID中没有患者ID的注释,则插入将失败,SQL引擎会给您一个错误。请注意,您创建FK的Patients表上的列必须是主键。

插入数据真的会像任何其他插入一样:

INSERT INTO dbo.patientNotes (patientId, NoteText)
VALUES(4265, 'During his 8/14/2014 visit, Mr. Cottinsworth complained of chest pains. Evidently he has been wearing a lady''s corset to hide his large gut. Advised the very portly Mr. Cottinsworth to discontinue corset use'

您可以在SP中将其丢弃,将其放入代码中并使用patientId和NoteText的参数,但是您想要这样做。

至于在Visual Studio中以图形方式完成所有操作,我无法在那里提供太多帮助。我通常使用TSQL编辑器并输入我想要对DB执行的操作。我确信有很多关于如何在Visual Studio上设置FK的教程。

进一步阅读:

http://msdn.microsoft.com/en-us/library/ms189049.aspx

http://www.scarydba.com/2010/11/22/do-foreign-key-constraints-help-performance/

what are the advantages of defining a foreign key