对联结 table 实现感到困惑

Confused about junction table implementation

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

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

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

Table A 有大约 200 名培训师,每个培训师都有自己的 ID 号和姓名,用于管理与其他 table 的关系(比如社保、phone 数字、地址等)。 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 的交汇点,但考虑到网络上的大多数示例都是基于两个 table,而不是三个,我仍然没有弄清楚如何构建这个东西.

我正在考虑让认证 table (Table C) 没有关键字段,只是存储重复使用 [Trainer_ID] 的零碎信息,但我担心缺少规范化可能会导致未来出现问题。

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

您使用带有重复培训师 ID 的认证 table 的想法没有错。它不是冗余数据,因为您在 table 中也会有一个 Certification_ID 作为主键。您的另外两个字段将是另外两个 table.

的外键

中介(Junction-tables)table 非常 在 运行 Multi-Billion 美元公司的大型数据库中很常见,所以不用担心。