使用实体关系图对数据库进行建模

Posted

技术标签:

【中文标题】使用实体关系图对数据库进行建模【英文标题】:Modeling a database using entity relationship diagram 【发布时间】:2017-09-10 21:44:58 【问题描述】:

我已经创建了这个 ERD,看看:https://i.gyazo.com/ea3ad2073ad5302834b642dea7467662.png

但现在我想在我的图表中添加更多信息,但我不知道该怎么做。

我想修改我之前的 ERD,我需要确保每个班次都送到医生工作的医院。另外,我需要为每位患者注册医疗保险。

希望你能帮助我

【问题讨论】:

您可以对医生和医院之间的works at 关系建模,但 ER 模型和图表符号不支持复杂的约束。我只需在 ERD 上做一个注释,然后将必要的唯一索引和外键约束添加到物理模型/实现中。 @reaanb 谢谢你的回复,但是你能告诉我(使用截图)你会做什么吗? :S 在我发布答案之前,也许您可​​以提供更多关于您对医疗保险的要求的信息。您只需要提供者和编号的患者属性,还是要对提供者和计划以及家属和排除项等进行建模? @reaanb 是的,伙计,你是对的。可以给我看两个例子吗? 我的最后一条评论是要求提供更多信息。我不知道你需要什么医疗保险。 【参考方案1】:

您可以在 ERD 中为 Works at 关系建模,但复杂的约束(例如确保医生轮班发生在他们工作的医院)只能在物理模式中正确表示,因为它依赖于复合 FK 约束。

我会在我的 ERD 图上做一个注释来指明约束:

然后,在物理模式中:

CREATE TABLE Works_At (
    doctor_dna VARCHAR NOT NULL,
    hospital_code VARCHAR NOT NULL,
    PRIMARY KEY (doctor_dna),
    UNIQUE KEY (doctor_dna, hospital_code)
);

CREATE TABLE Shifts (
    shift_id INT NOT NULL,
    doctor_dna VARCHAR NOT NULL,
    patient_dna VARCHAR NOT NULL,
    hospital_code VARCHAR NOT NULL,
    date DATETIME NOT NULL,
    hour INT NOT NULL,
    PRIMARY KEY (shift_id),
    FOREIGN KEY (doctor_dna, hospital_code) REFERENCES Works_At (doctor_dna, hospital_code)
);

注意 Works_At 中的 UNIQUE KEY 和 Shifts 中的复合 FOREIGN KEY 约束。

图表上的一些 cmets:同时使用 Crow's feet 和 1-N 基数指示符是多余的。我建议只使用 1-N 基数指标,因为您的图表主要使用 Chen 的符号。鱼尾纹在表格图中更常用。

其次,我认为Shifts 被错误地建模为弱实体集。弱实体集是(至少部分)由单个父实体集标识的实体集。如果您的意图是 ShiftsPatientDoctorHospital 唯一标识,则最好将其表示为这些实体集之间的三元关系。但是,根据我的经验,患者不仅限于每位医生/医院一次就诊。也许您打算使用 DateHour 作为弱键,但这会产生复杂的关系,如果您想将任何其他内容与班次相关联,则必须将所有 5 列作为复合外键包含在另一张桌子。就个人而言,我宁愿引入一个代理键来使其成为常规实体集。

如果对Person 做同样的事情可能是个好主意。使用 DNA 作为标识符存在许多问题。大小(DNA 档案往往很大)、隐私问题(标识符可能包含有价值或敏感的信息)、实际困难(每个医生和患者必须在注册之前进行 DNA 测序吗?)、准确性(有限的档案可能无法保证唯一而完整的配置文件是不切实际的)。

至于医疗保险,我建议您在线研究该主题(甚至咨询该领域的专家)并确定您需要哪些实体、属性和关系。一旦你知道你想添加什么信息,我可以建议如何添加它。

【讨论】:

没关系,伙计,但是这个案子呢? ***.com/questions/43416585/…

以上是关于使用实体关系图对数据库进行建模的主要内容,如果未能解决你的问题,请参考以下文章

实体框架中的问题建模关系首先使用代码

《Entity Framework 6 Recipes》中文翻译系列 -----第二章 实体数据建模基础之使用Code First建模自引用关系 (转)

CouchDB

数据建模——关系#yyds干货盘点#

结构化分析方法

复习三——关系数据模型