Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何设计这个一对多数据库?_Mysql_One To Many - Fatal编程技术网

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

Mysql 如何设计这个一对多数据库?,mysql,one-to-many,Mysql,One To Many,我一直在阅读“一对多”数据库,但我很难理解在我的案例中实现解决方案的最佳方法 我想要一个MySQL数据库来记录哪些员工在工作中读过某些培训手册 所以我有一张员工表。我有一张分发表格 我想记录员工是否点击表示他们已经阅读了分发的文件 我的员工表包含ID、姓名、电子邮件 我的分发表有ID和标题 我最好在Employee表中添加一个字段,该字段将包含一个分发ID列表,以显示他们已阅读哪些分发 我需要能够轻松地搜索,以显示有多少百分比的员工阅读了特定的手册,我认为我的方法会使这非常困难 我不能在员工表上

我一直在阅读“一对多”数据库,但我很难理解在我的案例中实现解决方案的最佳方法

我想要一个MySQL数据库来记录哪些员工在工作中读过某些培训手册

所以我有一张员工表。我有一张分发表格

我想记录员工是否点击表示他们已经阅读了分发的文件

我的员工表包含ID、姓名、电子邮件

我的分发表有ID和标题

我最好在Employee表中添加一个字段,该字段将包含一个分发ID列表,以显示他们已阅读哪些分发

我需要能够轻松地搜索,以显示有多少百分比的员工阅读了特定的手册,我认为我的方法会使这非常困难

我不能在员工表上有单独的字段,如讲义1、讲义2等,因为将定期添加新的讲义

我相信这一定是一个常见的问题,所以我想知道是否有人可以告诉我最好的解决方案


谢谢

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

Employee_Handout (ID, EmployeeID, HandoutID)
每次新讲义出来时,您都会在讲义表中插入一条记录。然后,当给定员工阅读该讲义时,您将在employee_讲义表中插入一条新记录。您可能不需要持久化非读取,因为它们很容易被检测为不在桥接表中


本专栏的主键可能是EmployeeID,HandoutID,假设您只需要一条记录,记录某个员工阅读给定的讲义。这也意味着给定的员工/讲义关系只能保留一次。

查找/连接表/桥接表有很多names@Ben谢谢你的提醒。现在正在读。干杯:-他需要一个UNIQUEEmployeeID,HandoudID,这样就不会有重复的了。@LukasS这样做更好的办法是让EmployeeID,HandoudID成为主键。我还是用INT-PK,更简单。通常我所做的只是对连接的多个列进行散列,这些列应该保持唯一性,并将其用作主键。@TimBiegeleisen谢谢您的回答。感谢您抽出时间回答我的问题。谢谢:-