用于查找效率的参考表而不是枚举字段

时间:2015-11-26 04:58:59

标签: mysql database-design enums

在我的应用程序中,我有一个拥有个人资料和地址的用户。这些表之间的关系是:

  • 用户: id,输入,注册,发送电子邮件......
  • 个人资料: user_idaddress_id,first_name,last_name,性别,状态等。
  • 地址: id,城市,街道,house_number,公寓

这些表格上有一些Enum个字段,但我认为它可能效率不高,因为我会根据地址和个人资料进行一些密集的用户查询所以我想也许我应该使用参考表呢? (我也用更好的整数获得索引。)

例如,在profiles我有一个status枚举字段,现在获得以下值:

  • 结婚
  • 丧夫
  • 离异

所以我想到可能在statuses - profiles上有status_id表和外键。

关于这一点的另一个困境是我是否应该有性别参考表?目前,我只接受我的枚举字段中的malefemale值用于性别,但将来我们可能会想要添加变性或其他任何内容。我还将根据课程性别进行密集的用户查找。我还应该将它提取到参考表中吗?

1 个答案:

答案 0 :(得分:0)

枚举在内部存储为数字。配置文件表中的性别或状态等数据不会经常修改。所以我个人更喜欢枚举。这样可以避免引用开销。

然而,它有其自身的缺点。

请参阅http://chateau-logic.com/content/why-we-should-not-use-enums-databases以了解不使用枚举的原因。如果您在应用程序中使用多种语言,那么枚举肯定是NO。