bomzh
Новичок
Проблема с разработкой структуры БД
Есть предварительная структура базы отдельного модуля
# TABLE FORM_BLOCKS
DROP TABLE IF EXISTS #TBL_FORM_BLOCKS#;
CREATE TABLE #TBL_FORM_BLOCKS# (
fb_id mediumint(8) UNSIGNED NOT NULL auto_increment,
fb_enabled tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_level tinyint(3) UNSIGNED DEFAULT '0' NOT NULL,
fb_to_male tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_to_female tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_to_orient tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_name varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (fb_id),
KEY (fb_enabled),
KEY (fb_level),
KEY (fb_to_male),
KEY (fb_to_female),
KEY (fb_to_orient)
) TYPE = #V_DBTYPE# CHARACTER SET #V_DBCHST#;
# TABLE FORM_FIELDS
DROP TABLE IF EXISTS #TBL_FORM_FIELDS#;
CREATE TABLE #TBL_FORM_FIELDS# (
ff_id mediumint(8) UNSIGNED NOT NULL auto_increment,
ff_block mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ff_order mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ff_enabled tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_type tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_level tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_required tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_name varchar(255) DEFAULT '' NOT NULL,
ff_default varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (ff_id),
KEY (ff_block),
KEY (ff_order),
KEY (ff_enabled),
KEY (ff_type),
KEY (ff_level)
) TYPE = #V_DBTYPE# CHARACTER SET #V_DBCHST#;
Суть следующая:
1. Есть неопределенный набор полей, количество и качество которых задает администратор;
2. Каждое поле соответвует определенному блоку (группе полей);
3. Каждый пользователь должен заполнить в специальной форме поля, заданные администратором;
Помогите разработать метод хранения данных этих полей для каждого пользователя
Хотел сдеать таблицу для хранения данных вида:
# TABLE FORM_DATA
DROP TABLE IF EXISTS #TBL_FORM_DATA#;
CREATE TABLE #TBL_FORM_DATA# (
fd_user mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
fd_field mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
fd_data varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (fd_user),
KEY (fd_field)
) TYPE = #V_DBTYPE# CHARACTER SET #V_DBCHST#;
Где fd_user - идентификатор пользователя, fd_field - идентификатор поля, fd_data - непосредственно данные поля.
Но в таком случае при количестве полей 40, а пользователей 1000 таблица конкретно раздуется
Есть предварительная структура базы отдельного модуля
# TABLE FORM_BLOCKS
DROP TABLE IF EXISTS #TBL_FORM_BLOCKS#;
CREATE TABLE #TBL_FORM_BLOCKS# (
fb_id mediumint(8) UNSIGNED NOT NULL auto_increment,
fb_enabled tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_level tinyint(3) UNSIGNED DEFAULT '0' NOT NULL,
fb_to_male tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_to_female tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_to_orient tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
fb_name varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (fb_id),
KEY (fb_enabled),
KEY (fb_level),
KEY (fb_to_male),
KEY (fb_to_female),
KEY (fb_to_orient)
) TYPE = #V_DBTYPE# CHARACTER SET #V_DBCHST#;
# TABLE FORM_FIELDS
DROP TABLE IF EXISTS #TBL_FORM_FIELDS#;
CREATE TABLE #TBL_FORM_FIELDS# (
ff_id mediumint(8) UNSIGNED NOT NULL auto_increment,
ff_block mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ff_order mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
ff_enabled tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_type tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_level tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_required tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
ff_name varchar(255) DEFAULT '' NOT NULL,
ff_default varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (ff_id),
KEY (ff_block),
KEY (ff_order),
KEY (ff_enabled),
KEY (ff_type),
KEY (ff_level)
) TYPE = #V_DBTYPE# CHARACTER SET #V_DBCHST#;
Суть следующая:
1. Есть неопределенный набор полей, количество и качество которых задает администратор;
2. Каждое поле соответвует определенному блоку (группе полей);
3. Каждый пользователь должен заполнить в специальной форме поля, заданные администратором;
Помогите разработать метод хранения данных этих полей для каждого пользователя
Хотел сдеать таблицу для хранения данных вида:
# TABLE FORM_DATA
DROP TABLE IF EXISTS #TBL_FORM_DATA#;
CREATE TABLE #TBL_FORM_DATA# (
fd_user mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
fd_field mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
fd_data varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (fd_user),
KEY (fd_field)
) TYPE = #V_DBTYPE# CHARACTER SET #V_DBCHST#;
Где fd_user - идентификатор пользователя, fd_field - идентификатор поля, fd_data - непосредственно данные поля.
Но в таком случае при количестве полей 40, а пользователей 1000 таблица конкретно раздуется