Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как правильно выполнить нормализацию баз данных?


(Alex) #1

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

Имеется 3 формы (Караоке, Видеофильмы, Ассеты) у них есть следующие поля со своим типом данных:

Караоке - Имя(text), Регион(combobox), возраст(int(100))
Видеофильмы - Имя(text),Регион(combobox), возраст(int(100)), Страна(text)
Ассеты - Имя(text), Битрейт(double), Длительность(text(формат времени))

В принципе я сделал 3 таблицы. Element, Form и Element_in_Form. Но что-то мне подсказывает что это не верно, так как у всех форм будет общее значение, если оно совпадает. Помогите разобраться с базой данных, как она должна выглядеть? Спасибо.


(vmaximv) #2

А причем тут нормализация?


(Alex) #3

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

Изначально имея все данные база данных имеет вид я бы сказал “свалки”, выполняя нормализацию приводим нашу базу данных к более или мене потребному виду. Я думаю это слово тут как раз кстати. Учитывая что выше описанные скриншоты получились путем нормализации.


(vmaximv) #4

Ок. Зайдем с другой стороны: показанные вами таблицы уже достаточно нормализованы с точки зрения реляционных СУБД (за исключением таблицы Element, но это не касается сути вашего вопроса).


(Alex) #5

Что именно не так с таблицой Element? (вынести тип?)


(vmaximv) #6

Угумс


(Alex) #7

Но я считаю не правильным что один и тот же элемент для формы имеет одинаковое значение, это вроде не правильно.


(vmaximv) #8

Ну это вам виднее. Что мешает вынести value в таблицу Element_in_Form?


(Alex) #9

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


(vmaximv) #10

Я бы привел пример “связующей” таблицы, где кроме трех ключей еще пару десятков полей (согласование оплаты и поступления), но сегодня понедельник и мне лень :wink: