映射一对多关系时是否应该有一个单独的表?

时间:2011-08-01 13:11:33

标签: mysql sql

在性能和可伸缩性方面,哪个是在MySQL中进行一对多映射的更好方法。

  • 使用单独的列但坚持使用2个表:

    (person):id,name

    (电话):id,number,type,person_id

  • 使用单独的表:

    (person):id,name

    (电话):身份证号码,号码,类型

    (person_phone):id,person_id,phone_id

3 个答案:

答案 0 :(得分:13)

这只有一个正确答案,而且是第一个答案。

您的第二个想法是如何模拟多对多关系,而不是一对多关系。

答案 1 :(得分:5)

就性能而言,避免连接总是更便宜,这会增加要查询的行数的多重性。

只要一个员工(一个真正的一对多)使用一部手机,第一个选项就是最佳选择。

答案 2 :(得分:5)

第一个更好。

  1. 更好的表现。
  2. 减少存储空间。
  3. 易于理解。
  4. P.S。也许你甚至不需要id电话,(number, type, person_id)就够了。