MySQL在多个关系之间列表

时间:2014-02-26 17:55:49

标签: mysql database relationships 3nf

这是我的两个表的结构(粗体中的主键和斜体文本中的外键)

service_agreements( id ,client_id,amount,date_begin,duration,* services_id_1 *,* services_id_2 *,* services_id_3 *,* services_id_4 *) 服务( id ,date_provided,description,staff_person)

表格背后的想法是,基于协议,公司提供最多四次服务。 如图所示,service_agreements表(services_id_1,...)的四个字段与服务表(id字段)具有四个一对一的单独关系。 在我看来有点不寻常,因为通常我只看到两个表之间的一个关系。 so.i知道这是不寻常的还是没关系,如果不寻常什么是更好的解决方案(没有将服务字段合并到service_agreements。因为服务表还有一些没有协议的服务记录。)< / p>

1 个答案:

答案 0 :(得分:0)

结构可能更好:

  

service_agreements( id ,client_id,金额,date_begin,持续时间);

     

服务( id ,date_provided,description,staff_person);

     

service_agreements_services( id ,输入enum(service1,service2等),    service_agreement_id service_id );

新表, service_agreements_services 在service_agreement和services之间添加多对一关系;

<强>优点
1)对于您提供的每项新服务,都会有新的插入(通常比更新更少的开销)
2)你甚至可以提供更大的无服务:)
3)表关系变得更容易。

由于