sql - 同一张表的一对多关系

标签 sql database database-design erd

情况是这样的:-

我有一个名为用户的表。这包含学生和导师的用户数据,因为所需的大部分数据是相同的。

完成系统后,我现在被告知客户希望能够将学生分配给导师。

是否有合法/干净的方式可以在单个表中创建一对多关系,也许是通过链接表?

我已尝试仔细考虑这个问题,但无论我想出什么解决方案似乎都很困惑。

如有任何意见,我将不胜感激。

谢谢

菲尔

最佳答案

您是否尝试过以下方法?

创建一个新表,例如 TutorStudent(如果需要,选择一个更合适的名称)。它应该有两列:

  • 导师编号
  • Student_ID

两列都是(复合)主键,每一列都是您的UsersUser_ID 的外键(我假设这就是您所拥有的)。

所以,如果您有一位名叫 Newton 的导师,他有两个学生,TeslaEdison,您的用户 表格会有这样的东西:

  • 用户 ID、姓名
  • 1、牛顿
  • 2,特斯拉
  • 3、爱迪生

您的 TutorStudent 表将具有以下值:

  • 导师 ID、学生 ID
  • 1, 2
  • 1, 3

相对简单,不需要对现有表格进行任何修改。

删除用户时一定要小心 - 使用数据库系统的删除级联功能或之后做一些维护工作,这样您的 TutorStudent 表就不会在更新/删除用户时过时。

关于sql - 同一张表的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25501698/

相关文章:

mysql - 简单的 MySql 更新查询很慢

sql - 为什么SQL函数总是返回空结果集?

sql - 如何在ORACLE中创建函数来计算列中的值?

ruby-on-rails - 无架构数据库 : Indexing dynamically-typed things by their properties?

mysql - 梦幻联盟的数据库设计

c# - 从多列检索数据并在单列中显示

mysql - sun mysql数据库管理器哪里去了?

php - 如何使用PHP和mysql制作搜索页面?

android - 在客户端(android)和服务器(rails PostgreSQL)之间同步数据库

mysql - 标签或搜索或两者