mysql如何在单列

时间:2017-04-03 10:26:57

标签: php mysql

我有两张桌子患者和细节。患者与使用外键的详细信息相关。在患者中,一个用户可以拥有多个详细信息值。

我试过了:

INSERT INTO `Patients`
        (`patientId`, `name`, `address`, `etage`, 
         `Door`, `Elevator`, `key_number`, `medicineId`, `lid`, 
         `doctorId`) 
VALUES (109, 'Muller', 'bla bla bla ', 3, 
            'links' , 1 , 'S12' ,'m9' , '{02.0 , 2.10 ,2.30}' ,
            'D11');

当我尝试插入时,我收到以下错误:

  

无法添加或更新子行:外键约束失败       (SanitasPatients,CONSTRAINT Patients_ibfk_2外键(lid)       参考Detailslid))

1 个答案:

答案 0 :(得分:0)

外键意味着Patiens的每一行都应在其lid列中包含与lid Details列中可用值相匹配的值;最有可能的是,Details的{​​{1}}值为lid的{​​{1}}中没有行。

使用该结构,您应该为每个{02.0 , 2.10 ,2.30}值插入一行,但这会导致其他问题(可能会重复lid个键)。

这显示了表格设计中的一些问题:您所描述的内容看起来像patientId关系,需要对三个表进行建模。

您需要的结构是

many-to-many

通过这种方式,每个患者可以有一行,每个细节可以有一行,还可以通过关联这两个实体的ID来组合患者​​和细节的所有组合。

您编写的查询将被拆分为

Patients
    patientId
    name
    address
    etage
    Door
    Elevator
    key_number
    medicineId
    doctorId 
    --notice, no more lid here

Detail
    lid
    --whatever else you have here

PatientsDetail
    patientId
    lid