java中数据库字典的最佳实践

时间:2012-04-14 12:08:39

标签: java dictionary enums persistence

是否有一种“规范”方式来表示字典 - 通过java持久性维护 - 数据库?

假设我有一张人的桌子,并且有一个专栏“专业”。

一系列专业受到限制,但可以延长。有些职业对军人或医生等系统有一些特殊的意义。

  1. 我可以使用enum作为职业,并在数据库中存储字符串(name()方法)值,如here所示。它简单易读。
  2. 在数据库中,我可以拥有一个字典表'profession',其中包含职业(id,name_of_profession),以及表'people',它具有来自表'profession'的外键(id_profession)。 than enum将具有一个Integer id值,该值映射到'profession'表中的id列。
  3. 首先解决方案简短易行。但在这种情况下,没有应用程序的数据库没有完整性。第二种“遗产”方式不合适吗?

2 个答案:

答案 0 :(得分:2)

我认为您已经确定了这两种方法的优缺点。您可以根据自己的具体应用来决定哪种更好。

或者换句话说,“最佳实践”取决于您的应用程序的实际要求。

答案 1 :(得分:0)

您可以使用两种方案的组合:

  • 拥有Professions表,其中single primary key是该职业的名称。

  • People列中有一个带有外键约束的profession表。

使用字符串作为主键/外键会影响更新性能,但它会使People中的每一行都自包含,这有利于检索操作。因此,除非基准测试另有说明,否则这种替代方案可能是可能的。