2012-01-14 90 views
3

使用枚举数据库(NHibernate + mysql)是一个好习惯?有什么优点和缺点?它对数据库效率有影响吗?NHibernate和枚举

回答

2

在数据库中使用枚举(NHibernate + mysql)是一个好习惯吗?

我认为,从程序员的角度来看,如果在适用的地方使用枚举,这绝对有意义。它提供了更多可读代码,并消除了数据库中的“无效”值。

有什么优点和缺点? 它对数据库效率有影响吗?

优点:

  1. 架空在枚举到数据库类型的转换:从代码
  2. 数据完整性

缺点

  1. 可读性。尽管这可能可以忽略不计。没有测试过,但我会认为是这样。

我确定社区其他人可以肯定地添加到上面的列表中,但我会说整体使用枚举是一个好主意,它是有道理的。

0

我觉得从代码的角度来说,枚举肯定有道理。但是,如果您使用NHibernate生成数据库模式,请使用MySQL的Enum Data Type注意它。这会将您的枚举存储为字符串,但强制只输入有效值。从存储的角度来看,这可能是昂贵的,并且在尝试重构时也是如此。枚举数据库类型将为您处理数据库级别的验证,因此任意更新将不那么令人担忧,我更愿意存储数值并依靠应用程序进行验证,因为它可以更轻松地添加或重命名枚举成员。

我不知道这是否是最好的方法(如果您使用流畅的nhibernate,这几乎可以肯定是使用约定),但如果你看at this blog post你可以找到一个IUserType处理映射枚举为整数在MySQL中解决了一些遇到的挑战。