Mysql 如何设计这个一对多数据库?
我一直在阅读“一对多”数据库,但我很难理解在我的案例中实现解决方案的最佳方法 我想要一个MySQL数据库来记录哪些员工在工作中读过某些培训手册 所以我有一张员工表。我有一张分发表格 我想记录员工是否点击表示他们已经阅读了分发的文件 我的员工表包含ID、姓名、电子邮件 我的分发表有ID和标题 我最好在Employee表中添加一个字段,该字段将包含一个分发ID列表,以显示他们已阅读哪些分发 我需要能够轻松地搜索,以显示有多少百分比的员工阅读了特定的手册,我认为我的方法会使这非常困难 我不能在员工表上有单独的字段,如讲义1、讲义2等,因为将定期添加新的讲义 我相信这一定是一个常见的问题,所以我想知道是否有人可以告诉我最好的解决方案Mysql 如何设计这个一对多数据库?,mysql,one-to-many,Mysql,One To Many,我一直在阅读“一对多”数据库,但我很难理解在我的案例中实现解决方案的最佳方法 我想要一个MySQL数据库来记录哪些员工在工作中读过某些培训手册 所以我有一张员工表。我有一张分发表格 我想记录员工是否点击表示他们已经阅读了分发的文件 我的员工表包含ID、姓名、电子邮件 我的分发表有ID和标题 我最好在Employee表中添加一个字段,该字段将包含一个分发ID列表,以显示他们已阅读哪些分发 我需要能够轻松地搜索,以显示有多少百分比的员工阅读了特定的手册,我认为我的方法会使这非常困难 我不能在员工表上
谢谢我想您需要一个桥接表来记录员工和分发记录之间的关系。大概是这样的:
Employee_Handout (ID, EmployeeID, HandoutID)
每次新讲义出来时,您都会在讲义表中插入一条记录。然后,当给定员工阅读该讲义时,您将在employee_讲义表中插入一条新记录。您可能不需要持久化非读取,因为它们很容易被检测为不在桥接表中
本专栏的主键可能是EmployeeID,HandoutID,假设您只需要一条记录,记录某个员工阅读给定的讲义。这也意味着给定的员工/讲义关系只能保留一次。查找/连接表/桥接表有很多names@Ben谢谢你的提醒。现在正在读。干杯:-他需要一个UNIQUEEmployeeID,HandoudID,这样就不会有重复的了。@LukasS这样做更好的办法是让EmployeeID,HandoudID成为主键。我还是用INT-PK,更简单。通常我所做的只是对连接的多个列进行散列,这些列应该保持唯一性,并将其用作主键。@TimBiegeleisen谢谢您的回答。感谢您抽出时间回答我的问题。谢谢:-