【问题标题】:Creating relationships in MySQL [closed]在 MySQL 中创建关系 [关闭]
【发布时间】:2018-12-09 14:35:52
【问题描述】:

目前,我在 1 个数据库中有 3 个表。

  • 表 #1:patients
  • 表 #2:checkups
  • 表#3:surgery

表 #1 (patients) 包含以下内容:

ID
First name
Last name
Born
Residence
Phone number
Date added*(to the database)*

表 #2 (checkups) 包含以下内容:

Column1
Column2
Column3
Column4
Column5
Column6
Column7
Column8
Column9
Column10

表 #3 (surgery) 包含以下内容:

Date
Clinique
Anesthesia
Comments

表1中的列ID(patients)设置为PRIMARY KeyUNIQUE索引,设置为INT(11)

显然,名为patients 的表格将容纳独特 患者。

名为checkups 的表将保存在各种检查后收集的数据。 此表可以包含多行,每行具有不同的字段值,用于相同的患者

示例

  • 患者 #43 在检查表中可以有 4 行数据(4 次检查)。
  • 患者 #21 在检查表中可以有 1 行数据(1 次检查)。
  • 患者 #78 在检查表中可以有 11 行数据(11 次检查)。

...等等等等。

名为surgery 的表将保存有关手术安排(时间、地点等)的患者数据。类似于checkups 表,每个患者在该表中可以有多个行。

以后的目标

我计划在我正在开发的应用程序中连接该数据库并与之交互。我想以这样的方式链接表格,当我在应用程序中选择患者时(患者将在 DBGrid 中可见)他在 checkups 表中的所有行(检查)将显示在另一个DBGrid,而他的所有手术时间表将同样显示在另一个DBGrid 中。

当我从列表中选择不同的患者时,也会发生同样的事情。

问题/问题:

如何链接这些表/列以实现最终结果(如上所示)?我已经开始浏览 MySQL 手册,但我似乎无法理解那里解释的关系。特别是 1 到 1、1 到多个、识别和非识别类型。 我应该使用哪些来实现我的目标?

我正在使用 mysql 8.0.3(他们网站上的社区版)设置为 InnoDB 并通过 Workbench 进行交互。刚刚打开 MySQL 模型选项卡并与 EED 图一起修改

我希望有一个写得很好的示例、教程或其他一些可供阅读的资源,除了 mysql 手册部分。

【问题讨论】:

  • 不加解释的否决票非常有用。谢谢。
  • 看起来人们投票决定关闭,因为 Too Broad。这也是对 Stack Overflow 的犯规:“[where is] 一个写得很好的示例、教程或其他一些可供阅读的资源”。那是要求场外资源。但这个问题似乎是一个写得很好的设计问题。也许你会在Database Administrators Stack Exchange 获得更好的运气。
  • @jww 没有看到它太宽泛,但无论如何。从字面上看,有数百个写得更糟糕的问题没有得到这样的抨击。他们中的很多人都有同样的问题。很多类似的答案,从示例开始,最终添加了场外资源以进一步阐述。这就是我所指的。猜猜人们只是挑剔。好吧,我自己关。无论如何,感谢您对此事的评论。我一定会看看你的建议。

标签: mysql sql mysql-workbench


【解决方案1】:

我认为您不必担心用于描述关系的“词”。

逻辑很简单:

  • “检查”有一名患者。所以它应该有一个非NULL patientid 与患者的外键关系。
  • “手术”有一名患者。所以它应该有一个非NULL patientid 与患者的外键关系。

您正在实施 0/1-many 关系并不是很重要。对业务实体的了解决定了您需要什么。

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 2012-10-12
    • 2013-04-09
    • 2019-04-17
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多