Задать вопрос
weranda
@weranda

Как правильно распределить данные по таблицам?

Приветствую.
Приведу коротенькую таблицу заказов.
61f170e41b091825589246.png
В этой таблице есть дата, описание, и статус. Я не очень понимаю что делать со статусами:
а) оставлять их в этой таблице;
б) переносить в отдельную таблицу (order_statuses);
в) запихнуть в таблицу настроек (settings) в одно поле в массив какой-нибудь.

Будет несколько статусов, могут быть добавлены новые или удалены старые. Данные в таблицу будут заноситься с сайта. Рядом с полем статуса на сайте будет выбор статуса из выпадающего списка, к примеру. Получается, что именования статусов для их выбора где-то должны храниться: их можно добавиться прямо в HTML, в JS и поттягивать их оттуда или же разместить их в БД и тянуть из нее. Столько вариантов, аж голова кругом:)

С размещением данных в HTML & JS сложностей не вижу. Вижу сложность для себя с тем, в каком виде поместить эти статусы в таблицу БД. Приведите, пожалуйста, корректный пример с аргументами, чтобы мне стало понятно.
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Вот рекомендуемая структура базы данных в таком случае:
CREATE TABLE statuses (
	id int primary key auto_increment,
  	title varchar(64)
);

CREATE TABLE orders (
	id int primary key auto_increment,
  	created_at datetime default now(),
  	status_id int references statuses(id)
);

MySQL fiddle online
Ответ написан
Комментировать
AlexNest
@AlexNest
Работаю с Python/Django
a) Неверно с точки зрения нормализации - избыточность данных.
б) В целом - допустимый вариант и, в случае если нужно будет изменять варианты - оптимальный.
в) Также нарушает принципы нормализации - в одном поле нельзя хранить массивы.
г) Как вариант - использовать enum. Самый простой вариант, но при этом будет проблемно их изменять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Synapse AI Москва
от 120 000 ₽
ITK academy Нижний Новгород
от 75 000 до 120 000 ₽
от 180 000 до 250 000 ₽