密钥主要的重复条目“ID”?

时间:2013-10-14 14:12:49

标签: java mysql wamp

我创建了一个名为'hmdb'的数据库,并在该数据库中使用wamp命名为table1和table2的两个表。两个表都将ID字段作为主键。我的java代码实际上首先检查ID是否存在于table1中,如果是这样的话(实际上这是用于检查它是否是现有用户,如果没有,则患者必须首先注册自己)然后它打开一个医生填写的框架患者信息及其身份证明。

值得关注的是,当下一次医生填写患者信息时,它会说主键“ID”的重复输入。这是我的问题:对于相同的'ID'(主键),我们可以在数据库中插入多个记录。在我的项目中,很可能一位患有其独特身份的患者可以不止一次去看医生,而且由于医生必须记录他的诊断,因此也是如此。在数据库中提供详细信息还有一个名为“访问日期”的字段,所以我认为我应该将table2的主键更改为“日期”(考虑一个患者最多只能在一天内访问一次医生),因为日期总是不同的,所以我可以提供相同“ID”的数据。为此,我有一个疑问,所以我想问一个问题:如果有两个表,我们可以为两个表使用不同的主键,或者是否需要使用相同的主键?

3 个答案:

答案 0 :(得分:2)

这里的解决方案是建立多对多的关系。您需要一个额外的表格,其中包含doctor_id和patient_id的映射。

答案 1 :(得分:1)

听起来你需要创建一个主键来访问。像VISIT_ID之类的东西。因为患者每天可以多次去看医生(可能不常见,但很可能),我会使用制造的钥匙进行VISIT_ID。查看大多数DBMS中常见的自动编号或自动密钥。它们保证为该表生成唯一键。

在访问表中,您还可以存储医生和患者的外键,这些外键分别链接到包含您的医生和患者信息的表格。

祝你好运!

答案 2 :(得分:1)

首先,主键是唯一标识一行。其次,创建一个名为patient_id的字段,并将该字段用作患者ID,而不是主键。您还可以从另一个表中将其作为外键,该表将保存患者记录。外键需要成为主键。