对联结表实现感到困惑

时间:2019-05-30 18:24:51

标签: ms-access multivalue junction-table

首先,我不是程序员,这是我第一次从事数据库创建工作,这种实现是我目前正在实习期间确定的需求的一部分。

我目前正在开发MS Access数据库,该数据库将用于管理与运动教练的工作合同。该实现旨在迁移始终存储在平面Excel数据库中的一系列数据。

现在我在如何实现进行某些搜索所需的功能方面遇到问题。

Table A大约有200名培训师,每个培训师都有自己的ID号和姓名,这些姓名和名称用于管理与其他表格的关系(诸如社会保险,电话号码,地址等)。 ID是关键。如示例所示,它由三个字段构成。

[Trainer_ID] [Name]  [Last_Name]
1            Pedro   Pérez
2            María   Gómez
3            Hollman Vivas

Table B是我们处理合同的(目前有20种)运动的列表。它具有一个自动编号字段作为键,每个运动的名称均作为短文本(仅使用小写字符)。可以根据需求和培训师入学情况,通过更多运动来更新列表。

[Sport_ID] [Sport_Name]
a          Soccer
b          Basketball
c          Tennis

最后,Table C以培训师ID为密钥存储每个培训师所拥有的特定证书。在Excel版本中,它具有四个字段。

[Trainer_ID] [Sport1] [Sport2]   [Sport3] [Sport4)
1            Soccer
2            Tennis   Soccer
3            Tennis   Basketball Soccer

Table C中的所有数据都像这样被加扰。

如您所见,每位培训师都拥有一个或多个认证,这些认证几乎可以实现无穷无尽的组合(例如1abc 2c 3ac)。更不用说,最终我们可以拥有一个拥有五个或更多认证的培训师,并且数据库的设计没有考虑到这一点。

我需要找到一种在MS Access数据库环境中理解这些数据的方法,但实际上并没有想到最佳的处理方法, 考虑到由于我们处理的信息量巨大,我们需要可以通过从.csv文件批量上传来轻松更新数据,也可以通过用于手动验证的表格来更新数据。

需要时,可以在查询中使用它来搜索特定能力。

我尝试做的第一件事就是保留数据的原样(包含四个运动场),但是事实证明,处理起来很麻烦。

然后是多值字段,该字段在10分钟后便被删除,因为我对此主题的研究表明这是一种非标准的实现,并且无法通过批量上传到基础来进行更新。

进一步的研究将我带到联结表,但是考虑到网络上的大多数示例都是基于两个表而不是三个表,因此我仍然没有弄清楚如何构造它。

我当时正在考虑不使用关键字段的认证表(Table C),而只是重复使用[Trainer_ID]来存储零散的信息,但是我担心这种标准化不足会导致出现问题。未来。

正如我之前所述,数据库应该能够以一致的方式存储,显示和更新每位培训师的资格,无论他们拥有多少证书。

1 个答案:

答案 0 :(得分:1)

将“认证”表与重复的培训师ID一起使用的想法没有错。这不是多余的数据,因为您还将在表中具有Certification_ID作为主键。您的其他两个字段将是来自其他两个表的外键。

中介(连接表)表在运行着数十亿美元公司的大型数据库中很常见,因此不必担心。

enter image description here