我手上有设计困境,我希望你们可以帮我解决这个问题。
问题: 我的应用程序有大约15个查找表,每个查找表都有代码和值属性。我想知道创建这些查找表的最佳设计方法是什么。
我脑子里有几个解决方案
如果你们可以帮我挑选一个解决方案(即使是我没有提到过的解决方案)以及这样做的理由,我们将不胜感激。
干杯, 萨曼斯
答案 0 :(得分:1)
我会选择选项1,因为枚举已在您的代码中修复。如果要在查找表中添加选项,只需将其插入数据库即可。使用枚举,您需要重新编译您的应用程序。
答案 1 :(得分:0)
我认为普通的JPA基类没有那么多用途。
假设您没有为公共键/值接口建模,那么为什么不将具体语义编码到查找表列名中,例如role_name,status_code等?
不确定您是否也在使用数据库ENUM,例如 MySQL ENUMs 。我假设这是为下一段(它是MySQL特定的)。其他DBMS如PostgreSQL有非冗余的ENUM,因此以下可能并不适用于您的情况:
无论如何,MySQL ENUM都无法应用于所有情况。如果查找值是单值的,并且基本上仅从一个表/实体引用,则应使用MySQL ENUM。我的策略是如果从多个其他表引用值或查找表需要多个属性,则添加单独的查找表。请注意,在DB中使用相同的ENUM定义会增加冗余。使用MySQL ENUM可以为您保存表,连接和一些关系。请记住,DB ENUM的值应尽可能静态。如果需要更改,请再次使用查找表。
老实说这不是一个简单的话题,我不得不分享我对这个主题的看法,即使这包括MySQL细节。