Лучший дизайн базы данных для спящего режима?

Я новичок в разработке баз данных. Я использую MySQL

У меня есть таблица формы, которая содержит поле Страна

Так как значения в этих столбцах могут быть только из списка стран, я сделал этот столбец int вместо varchar и поместил список в новую таблицу. показано ниже:

  1. Вместо того, чтобы столбец страны, как

country varchar(255) NOT NULL

  1. Я сделал это 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 ответ

Решение

Я предпочитаю сотни основных таблиц, чем общую таблицу со всеми типами; больше структуры, больше организации, более адаптивный для добавления, удаления и обновления значения, а также для отчетов.

Другие вопросы по тегам