首页 > 解决方案 > 在 MySQL 中创建关系

问题描述

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

表 #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

ID1( patients) 中的列设置为PRIMARY Key和 ,UNIQUE索引设置为INT(11)

显然,命名的表patients将包含独特的患者。

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

示例

...等等等等。

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

后期目标

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

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

问题/问题:

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

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

除了mysql手册部分之外,我会很感激一个写得很好的例子、教程或其他一些可供阅读的资源。

标签: mysqlsqlmysql-workbench

解决方案


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

逻辑很简单:

  • “检查”有一名患者。因此它应该NULL patientid与患者具有非外键关系。
  • 一个“手术”有一个病人。因此它应该NULL patientid与患者具有非外键关系。

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


推荐阅读