【问题标题】:Primary key duplicated, however I need to use the values as a foreign later主键重复,但是我需要稍后将这些值用作外来键
【发布时间】:2021-06-14 03:06:29
【问题描述】:

INSERT INTO `employee_salary` (`id`, `dep_id`, `employee_hourly`, `employee_annual`) VALUES ('1', '1', '20.00', '40000.00'), ('2', '1', '20.00', '40000.00'), ('3', '2', '30.00', '60000.00'), ('4', '3', '15.00', '30000'), ('5', '3', '15.00', '30000.00'), ('6', '3', '15.00', '30000.00')

我不断收到重复的主要错误,我知道 dep_id 是我的重复,因为我在同一个部门有多个人。但是,稍后当我想将三个部门分解为他们的部门位置和部门负责人时,我想使用 dep_id 作为外键。我是否需要创建一个不同的主键,如果是这样,我不确定我应该如何证明我在同一个部门有 3 个人,在另一个部门有 2 个人,而没有主键值重复?

【问题讨论】:

  • dep_id 作为“员工”表中的主键没有意义。任何外键引用都应该指向 departments 表,而不是 employee_salary

标签: sql phpmyadmin


【解决方案1】:

主键的目的是为表中的每条记录标识一个唯一标识符。如果您提供的不是唯一的,那么它不是主键..

关系数据库的美妙之处在于,您在 Select 查询中“显示”的内容与数据的结构无关。如果您不希望使用主键,则根本不需要拥有主键,并且您仍然可以根据 Employee_Salary 构建您的报告,正如您所描述的那样,通过按部门分组并计算员工数量。

所以想想你的主键,因为它可以帮助你添加、更新和删除记录,但是当涉及到选择和汇总数据时,它是完全无关的。

【讨论】:

  • 感谢您的回复,我删除了 Primary 但保留了数据,不确定我的导师是否希望我的部门表中没有外键,但正如您所描述的那样解决了这个问题.
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2016-02-04
  • 2014-06-18
  • 1970-01-01
  • 2016-07-04
  • 2022-11-21
  • 1970-01-01
相关资源
最近更新 更多