2016-06-24 52 views
2

哪种MySQL数据类型对于存储血型更合适(所需数据量最小)?换句话说,用'+'或' - '符号存储一到两个字母。用于存储血型的MySQL数据类型?

谢谢

+0

无论你是否满意 – Drew

+1

我的第一个想法是一个ENUM,具有可能的值。 (A +,A-,B +,B-,AB +等......)有一些[注意事项](http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is -evil /)使用ENUM。而且,由于它是如此少量的数据,VARCHAR(3)也应该工作得很好。 –

+0

我为'ENUM'投票_用于此用例_。 –

回答

2

它高度依赖于您的需求和希望。就个人而言,我可能会去为每种类型分配一个数字值并使用tinyint。但是,如果您希望更直接可读的行CHAR(3)VARCHAR(3)可能更合适。事实上,这是我甚至建议使用ENUM的极少数罕见情况之一(因为非常不可能需要添加或删除可能的值)。

+0

我甚至没有想过使用ENUM,尽管对于本专栏以及其他一些有特定选项的人来说,这将是一个不错的选择。谢谢 –

+2

尽管在大多数情况下我都会提醒不要使用枚举,根据我的经验,对于不需要稍后扩展的有效值列表而言,实际上这种情况非常罕见,并且需要对多年数据进行修改表可能会很痛苦。对于各种数据库访问库中的枚举类型的支持可能有点欠缺。 – Uueerdo

+2

@Uueerdo - 该警告已过时。几个版本之前,'ALTERing'和'ENUM'变得非常有效 - 如果__nd_上只有_adding_新值。 –

相关问题