【问题标题】:Implement a "One-to-many" relationship with DataSets使用 DataSet 实现“一对多”关系
【发布时间】:2014-10-10 12:24:09
【问题描述】:

我有两张表格,一张包含患者信息,另一张包含每位患者的笔记。 (一位患者,一位患者的许多笔记)。

鉴于此,在设计器中(您可以通过右键单击选定的数据集来访问它),我如何创建一对多关系?我以前从未这样做过。

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

【问题讨论】:

    标签: c# sql database ado.net dataset


    【解决方案1】:

    从技术上讲,您不需要 做任何事情来创建一对多关系。您只需要按照您的方式设置这两个表并按照您打算使用它们的方式使用它们。我从事数据仓库工作,不幸的是,我们的很多这样的关系都没有用任何类型的键或约束来正式化。

    正确的做法是在 patientNotes 表的患者 ID 列上实现外键约束。如果患者 ID 存在于患者表中,FK 将只允许您将数据插入到 PatientNotes 中。如果您尝试将一条注释插入到您的表中,该表中的患者 ID 在患者表中不存在,则插入将失败并且 SQL 引擎会给您一个错误。请注意,您要为其创建 FK 的患者表上的列必须是主键。

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

    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 编辑器并输入我想要对数据库执行的操作。我确信有很多关于如何在 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

    【讨论】:

    • 嗨花栗鼠,绿色复选标记就在那里。不过,我需要你先向我解释几件事。 “4265”是什么意思?接下来,我将如何实现 FK 约束。最后,您是说患者 ID 必须已经存在于 patientNotes 表中,对吗?如果是这样,我将使用什么 SQL 语法在一位患者的下方输入多个注释?例如:"INSERT INTO PatientNotes (consultationNotes) VALUES (@newPatientConsultationNote) WHERE patientID = @patientID"; 如果这不正确,我该怎么办?
    猜你喜欢
    • 2021-03-25
    • 2019-08-16
    • 2015-02-06
    • 2017-04-08
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2015-04-05
    • 2012-06-05
    相关资源
    最近更新 更多