如何设计这个一对多数据库?

xfb7svmp  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我一直在阅读“一对多”数据库,但我很难理解在我的案例中实现解决方案的最佳方法。
我想要一个mysql数据库来记录哪些员工在工作中读过某些培训手册。
所以我有一张员工表。我有一张分发表。
我想记录员工是否点击说他们已经阅读了分发的文件。
我的employee表包含id、name和email。
我的分发表有id,标题
我最好在employee表中添加一个字段,其中包含一个“分发id”列表,以显示他们读过哪些分发?
我需要能够很容易地搜索,以显示什么百分比的员工阅读了一个特定的手,我认为我的方法会使这非常困难?
我不能在员工表上有单独的字段,如讲义1、讲义2等,因为新的讲义将定期添加。
我相信这一定是一个常见的问题,所以想知道是否有人可以告诉我最好的解决办法?
谢谢

wydwbb8l

wydwbb8l1#

我想你需要一个桥接表来记录员工和分发记录之间的关系。像这样:

Employee_Handout (ID, EmployeeID, HandoutID)

每次新的讲义出来时,您都会在讲义表中插入一条记录。然后,当一个给定的员工阅读讲义时,您将在文档中插入一个新记录 Employee_Handout table。您可能不需要持久化非读取,因为它们很容易被检测为不在桥接表中。
此列的主键可能是 (EmployeeID, HandoutID) ,假设您只需要一条记录,记录员工阅读给定的讲义。这也意味着给定的员工/分发关系只能持续一次。

相关问题