Лучший дизайн базы данных для спящего режима?
Я новичок в разработке баз данных. Я использую MySQL
У меня есть таблица формы, которая содержит поле Страна
Так как значения в этих столбцах могут быть только из списка стран, я сделал этот столбец int вместо varchar и поместил список в новую таблицу. показано ниже:
- Вместо того, чтобы столбец страны, как
country varchar(255) NOT NULL
- Я сделал это countryCode с типом данных INT и добавил внешний ключ в таблицу 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)
);
Он работает нормально, но проблема в том, что в той же таблице содержится много других столбцов, таких как formStatus (с возможными значениями Черновик, Сохранено, Утверждено), Пол (Мужской, Женский), Группа крови (A, B, O), rHFactor (+ ve, -ve), профессия (Служба, Бизнес, Студент, Безработный) и т. д. Если я составлю отдельную таблицу для каждого такого столбца, то получу от 20 до 25 основных таблиц.
Я также попытался поместить все такие основные даты в одну таблицу, то есть CommonMaster с типом столбцов , ключом и значением, как показано ниже:
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 в проекте. Таким образом, дизайн должен иметь отношение к этому.
1 ответ
Я предпочитаю сотни основных таблиц, чем общую таблицу со всеми типами; больше структуры, больше организации, более адаптивный для добавления, удаления и обновления значения, а также для отчетов.