更好的 hibernatre 数据库设计?

Better Database design for hibernatre?

我是数据库设计新手。我正在使用 MySQL

我有一个 Form table,其中包含一个字段 Country

由于此列中的值只能来自国家/地区列表,因此我将此列设为 int 而不是 varchar 并且将列表放在新的 table 中。如下所示:

  1. 而不是像
  2. 这样的国家列

country varchar(255) NOT NULL

  1. 我将其设为数据类型为 INT 的国家代码,并向 table CountryMaster 添加了一个外键,如下所示

... countryCode INT NOT NULL, FOREIGN KEY (countryCode) REFERENCES CountryMaster (countryCode), ...

create table CountryMaster( countryCode INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) );

它工作正常,但问题是相同的 table 包含更多列,例如 formStatus(可能的值为 Draft、Saved、Approved),gender(男,女),bloodGroup(A,B,O),rHFactor(+ve, -ve), occupation (Service, Business, Student, Unemployed) 等。如果我为每个这样的专栏单独table,我最终会在 20 到 25 Master tables.

我还尝试将所有此类主日期放在一个 table 中,即 CommonMastertype、key 和 value 如下图:

create table CommonMaster( commonCode INT NOT NULL PRIMARY KEY AUTO_INCREMENT, type VARCHAR(255) NOT NULL, key INT NOT NULL, value VARCHAR(255) NOT NULL );

具有如下值:

   code type       key value
     7  BLOOD_GROUP 1   A
     8  BLOOD_GROUP 2   B
     9  BLOOD_GROUP 3   O
    10  RH_FACTOR   1   +ve
    11  RH_FACTOR   2   -ve
    12  OCCUPATION  1   Service
    13  OCCUPATION  2   Profession
    14  OCCUPATION  3   Business
    15  OCCUPATION  4   Student
    16  OCCUPATION  5   Unemployeed

我想知道什么是更好的方法以及为什么。我也必须在项目中使用hibernate orm。所以设计应该与此相关。

比起所有类型的普通 table,我更喜欢数百个大师 table;更多结构,更多组织,更适合添加、删除和更新 then 的值,也适用于报告。