目前,我有3个表位于1个数据库中 .
-
表#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 Key
和 UNIQUE
index,并设置为 INT(11)
.
显然,名为 patients
的表将容纳 unique 患者 .
名为 checkups
的表将保存在各种检查后收集的数据 . 对于相同的 patient ,此表可以包含多行,每行具有不同的字段值 .
Example :
-
patient#43在检查表中可以有4行数据(4个检查) .
-
patient#21在检查表中可以有1行数据(1个检查) .
-
patient#78在检查表中可以有11行数据(11个检查) .
...等等等等 .
名为 surgery
的表格将保存有关手术安排的患者数据(何时,何地等) . 与 checkups
表类似,每个患者在此表中可以有多行 .
Later goal :
我打算在一个应用程序中连接和交互这个数据库,我希望以这样一种方式链接表格:当我在应用程序中选择一个病人(病人将在 DBGrid
中看到)时,他的所有行(检查)来自 checkups
表将显示在另一个 DBGrid
中,他的所有手术时间表将同样显示在另一个 DBGrid
中 .
当我从列表中选择不同的患者时,应该发生同样的事情 .
Question/issue:
如何以实现最终结果的方式链接这些表/列(如上所述)?我已经开始浏览MySQL手册,但我似乎无法理解那里解释的关系 . 具体为1对1,1对多,识别和非识别种类 . 我应该使用哪些目标?
我正在使用mysql 8.0.3(来自他们网站的社区版)设置为InnoDB并通过Workbench进行交互 . 刚刚打开了MySQL Models选项卡并修改了EED Diagrams
我很欣赏一个写得很好的例子,教程或其他一些阅读源,除了关于这个的mysql手册部分 .
1 回答
我认为您不必担心用于描述关系的“词汇” .
逻辑非常简单:
A "checkup"有一名病人 . 因此它应该与患者具有外键关系 .
A "surgery"有一名病人 . 所以它应该与患者有一个非关系的非关系 .
您正在实现0/1-many关系并不重要 . 对业务实体的理解决定了您的需求 .