大家好,我使用名为“性别”的列为实体建模。在应用程序代码中,性别应该是(Java)枚举类型,具有2个值(MALE和FEMALE)..您将如何对其建模,因为知道作为数据类型的枚举不是通用SQL(语言)的一部分92 。
数据模型必须具有可移植性,才能被多个DBMS(Mysql,Oracle,Derby)和多个持久性提供程序(JPA,Hibernate,JDBC)使用。我觉得它达到了2个级别:-首先是架构和实体级别(将枚举存储为- VAR-CHAR或INT)-其次是应用程序代码级别(JDBC不支持枚举,JPA支持,但是这取决于实现方式)
是否有通用解决方案,例如适用于Mysql DBMS?谢谢 !!
我通常采用以下解决方案,该解决方案提供了完全标准化的数据库架构。
Colour
int
tinyint
varchar
创建过程dbo.InsertRecord @colour varchar(32)AS …
该存储过程将执行必要的字符串到整数的转换,使您的数据表可以通过int外键引用Color表。
同样,您可以在数据表上创建一个视图,该视图将在后台连接到Color表,以将数据的非规范化通道显示回应用程序或最终用户。
存储过程方法的替代方法是在启动时在应用程序中读取并缓存顺序的名称映射。与数据库中Color表的内容相比,这样做的优点是能够验证Java Color枚举的完整性。