在MySQL中创建关系

时间:2018-12-09 14:35:52

标签: mysql sql mysql-workbench

目前,我在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到多种识别和非识别种类。 我应该使用哪些目标?

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

除本文的mysql手册部分外,我将欣赏一个写得很好的示例,教程或其他阅读源。

1 个答案:

答案 0 :(得分:1)

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

逻辑很简单:

  • “检查”中有一名患者。因此,它应该具有与患者具有外键关系的非withRouter() NULL
  • “外科手术”只有一名患者。因此,它应该具有与患者具有外键关系的非patientid NULL

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