【问题标题】:Creating tables using ERD and Normalizing使用 ERD 和规范化创建表
【发布时间】:2014-01-20 17:28:09
【问题描述】:

我创建了下面给出的 ERD。我需要使用下面的 ERD 创建表,但我需要先规范化。

如果我将以下 erd 中给出的从业者表标准化(据我所知),情况就是这样:

            practitionerID, DoctorID-> PatientID

            PractitionerID-> patientID

因此,如果我对此进行规范化,我最终将拥有两个表的相同主键。 这不适合规范化,所以我真的很困惑。

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

如何标准化?

【问题讨论】:

标签: normalization database-normalization erd


【解决方案1】:

首先。

什么是标准化。

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

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

您的解决方案

现在您有两个主表,即医生和患者,并且它们之间肯定有多对多的关系。

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

现在是您的解决方案。

你先做表医生。

第二次你让桌子有耐心。

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

但是当您将不同的患者分配给不同的医生时,他们的主键将被插入到从业者表中。

所以现在当您需要有关任何患者的信息时,您可以使用从业人员表,如何?从患者 ID 获取所有医生列表,与医生中的相同。

当您保留更多信息(例如患者病史、患者其他信息)时,您需要为此绘制更多表格。

因此,从这个角度来看,您的数据不会重复,这就是标准化。

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

希望对你有所帮助。

如果您需要询问更多信息,请告诉我。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2014-12-26
    • 2017-07-27
    • 1970-01-01
    • 2018-12-18
    相关资源
    最近更新 更多