使用ERD和规范化创建表

时间:2014-01-03 05:10:58

标签: normalization database-normalization erd

我创建了ERD,如下所示。我需要使用下面的ERD创建表,但我需要先进行规范化。

如果我对下面的erd中给出的从业者表进行规范化(据我所知),这是怎么回事:

            practitionerID, DoctorID-> PatientID

            PractitionerID-> patientID

因此,如果我将其标准化,我将最终为两个表都使用相同的主键。 哪个不适合规范化,所以我真的很困惑。

由于从业者与患者之间的关系很多,因此该表最终会出现重复数据。 这是ERD:

enter image description here

我如何规范这个?

1 个答案:

答案 0 :(得分:3)

首先。

什么是规范化。

在关系数据库设计中,组织数据以最小化冗余的过程。规范化通常涉及将数据库分成两个或多个表并定义表之间的关系。 规范化的主要目的是减少表格中的重复数据。

数据冗余发生在数据库系统中,该系统具有在两个或多个表中重复的字段。例如,当客户数据被复制并与购买的每个产品相关联时,数据冗余是已知的不一致来源,因为客户可能会显示给定属性的不同值。

您的解决方案

现在你有两个主要的医生和病人表,他们之间确实存在很多甚至很多关系。

当你创建这两个表并通过查看它们的关系将它们保存在MySQL Workbench或SQLYog中时,它们将提供你在问题中显示的三个表,即从业者表格。

现在是你的解决方案。

你先做医生。

第二,你让桌子耐心等待。

现在,当您插入信息时,我们会将信息插入到各自的表中。将患者信息表示在患者表中,将医生信息表示到医生表中。

但是当您将不同的患者分配给不同的医生时,他们的主要密钥将被插入医生表中。

所以现在当您需要有关任何患者的信息时,您可以使用医生表,如何?从患者身份获取所有医生名单和医生名单。

当您保留更多信息,如患者病史,患者其他信息,那么您需要为此绘制更多表格。

因此,从该视图来看,您的数据不会重复,这是规范化。

为了使您的数据库更加安全和一致,您应该通过保持用户名或电子邮件的唯一性,将UNIQUE KEY添加到您的医生和患者表中,这意味着如果有人注册,那么第二次他们就不能。

希望它会对你有所帮助。

如果您需要更多信息,请告知我。

由于

相关问题