задача в примитивном виде: есть человек, для него хранится name и email. при этом могут добавиться другие данные, например "телефон". записей будет много: около 10 миллионов.
для структуры есть 2 варианта:
1 вариант:
таблица полей field (список полей: перечисляются имя, телефон, etc),
таблица значений values (список значений полей, item_id указывает на связующий элемент, field_id указывает на поле, value - значение)
таблица записей item (связующий элемент для полей, что бы соотносить их значения к "карточке" человека)
в этом случае для одной записи item будет создано (1*количество полей) записей в values, при большом количестве полей таблица values будет разрастаться очень быстро.
2 вариант:
делаем для каждого поля свою таблицу, сохраняя данные о динамически созданных таблицах. получим такую же структуру, но без "разрастания" одной таблицы.
какой вариант лучше выбрать, что ещё можно учесть?
для примера:
CREATE TABLE testik.human (
human_id INT(20) NOT NULL AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
floor BIT(1) NOT NULL,
PRIMARY KEY (human_id)
)
CREATE TABLE testik.email (
email_id INT(20) NOT NULL AUTO_INCREMENT,
email_address VARCHAR(255) NOT NULL,
human_id INT(20) NOT NULL,
PRIMARY KEY (email_id, email_address)
)
ALTER TABLE testik.email
ADD CONSTRAINT FK_email_id FOREIGN KEY (human_id)
REFERENCES testik.human(human_id);
CREATE TABLE testik.phone (
phone_id INT(20) NOT NULL AUTO_INCREMENT,
number_phone VARCHAR(50) NOT NULL,
numan_id INT(20) NOT NULL,
PRIMARY KEY (phone_id)
)
ALTER TABLE testik.phone
ADD CONSTRAINT FK_phone_id FOREIGN KEY (numan_id)
REFERENCES testik.human(human_id);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я новичок в программировании, мне нужно написать запрос в MySQL базу, у меня есть список нужных таблиц (который я получил запросом из схемы),...
Пробовал разные варианты из интернета, но они только работали с полукругом, те
Нужно сделать такую переключалку на чистом css, без js
как это сделать, и чтобы можно было вставить в блок и растягивать по ширине