更好的 hibernatre 数据库设计?
Better Database design for hibernatre?
我是数据库设计新手。我正在使用 MySQL
我有一个 Form table,其中包含一个字段 Country
由于此列中的值只能来自国家/地区列表,因此我将此列设为 int 而不是 varchar 并且将列表放在新的 table 中。如下所示:
- 而不是像
这样的国家列
country varchar(255) NOT NULL
- 我将其设为数据类型为 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 中,即 CommonMaster 列 type、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 的值,也适用于报告。
我是数据库设计新手。我正在使用 MySQL
我有一个 Form table,其中包含一个字段 Country
由于此列中的值只能来自国家/地区列表,因此我将此列设为 int 而不是 varchar 并且将列表放在新的 table 中。如下所示:
- 而不是像 这样的国家列
country varchar(255) NOT NULL
- 我将其设为数据类型为 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 中,即 CommonMaster 列 type、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 的值,也适用于报告。