Разработка базы данных для онлайн-калькулятора стоимости монтажа кабельных лотков
Рисунок 1 - Вид структуры базы данных
Для реализации и работы онлайн калькулятора, для хранения цен, названий и артикулом материалов и лотков необходимо разработать базу данных.
На основании полученного технического задания разрабатывается база данных. Выбрана наиболее защищенная СУБД (система управления базами данных) MySQL. Потому что имеет ряд преимуществ:
- MySQL запускается на любой OS (не требует платной лицензии Windows).
- Полнофункциональная MySQL бесплатна
- Легковесная, не требует мощного железа. Как следствие - быстрее на аналогичном железе.
- Хостинг MySQL есть практически везде
Согласно техническому заданию вначале опишем логическое проектирование базы данных. Для корректной и быстрой работы и подключения базы данных используются несколько таблиц базы данных. Разделяются которые по параметрам из ТЗ - каждый параметр имеет свою таблицу в базе данных.
Определили и назвали имена сущностей (таблиц) в базе данных:
- Cap_lotok - таблица углов
- Cap_views - вида углов
- Height_lotok - высоты лотка
- Width_lotok - ширины лотка
- Length_lotok - длины лотка
- View_lotok - типа лотка
- Top_lotok - крышки лотка
- lotok - таблица лотков
Каждая таблица имеет ключи первичный (идентификатор записи таблицы - формируется автоматически) и внешний ключ (для связей с другими таблицами).
Метод связи таблиц будет осуществлен “один к одному” ( одна запись к одной записи). Примером послужит данный случай. Один лоток имеет лишь одну высоту и одну ширину - он не может иметь два разных значения высоты, так как это уже будут два разных лотка.
Структура таблиц базы данных
Таблица 1 - Cap_lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_cap_lotok | bigint(20) | Primary Key |
name_cap | varchar(255) | Назване угла |
height_cap | bigint(20) | Внешний ключ (высота) |
cap_view | bigint(20) | Внешний ключ (вид угла) |
artikul_etm | varchar(255) | Артикул холодного цинкования |
articul_procreator | varchar(255) | Артикул горячего цинкования |
cost_etm | float(10,2) | Цена холодного цинкования |
cost_procreator | float(10,2) | Цена горячего цинкования |
Внешний ключ height_cap ссылается на таблицу height_lotok
Внешний ключ cap_view ссылается на таблицу cap_view
Таблица 2 - Cap_view
Наименование поля | Тип данных | Описание |
---|---|---|
id_cap_view | bigint(20) | Primary Key |
view_cap_name | varchar(255) | Назване вида угла |
Таблица 3 - height_lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_height | bigint(20) | Primary Key |
height_val | float | Значение высоты (мм) |
Таблица 4 - width_lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_width | bigint(20) | Primary Key |
width_val | float | Значение ширины (мм) |
Таблица 5 - length_lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_length | bigint(20) | Primary Key |
length_val | float | Значение длины (мм) |
Таблица 6 - view_lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_views | bigint(20) | Primary Key |
name_view | varchar(100) | Название вида лотка |
Таблица 7 - top_lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_top | bigint(20) | Primary Key |
name_top | varchar(255) | Название крышки лотка |
height_top | bigint(20) | Внешний ключ |
length_top | bigint(20) | Внешний ключ |
width_top | bigint(20) | Внешний ключ |
artikul_etm | text | Артикул холодного цинкования |
articul_procreator | text | Артикул горячего цинкования |
cost_etm | float | Цена холодного цинкования |
cost_procreator | float | Цена горячего цинкования |
Внешний ключ height_top ссылается на таблицу height_lotok
Внешний ключ length_top ссылается на таблицу length_lotok
Внешний ключ width_top ссылается на таблицу width_lotok
Таблица 6 - lotok
Наименование поля | Тип данных | Описание |
---|---|---|
id_lotok | bigint(20) | Primary Key |
name_lotok | varchar(100) | Название лотка |
artikul_etm | varchar(255) | Артикул холодного цинкования |
artikul_procreator | varchar(255) | Артикул горячего цинкования |
id_height | bigint(20) | Внешний ключ |
id_lenght | bigint(20) | Внешний ключ |
id_views | bigint(20) | Внешний ключ |
id_width | bigint(20) | Внешний ключ |
lotok_cost_etm | float | Цена холодного цинкования |
lotok_cost_procreator | float | Цена горячего цинкования |
Внешний ключ id_height ссылается на таблицу height_lotok
Внешний ключ id_lenght ссылается на таблицу lenght_lotok
Внешний ключ id_width ссылается на таблицу width_lotok
Внешний ключ id_views ссылается на таблицу view_lotok
Подключение к базе данных будет идти отдельным файлом для безопасного подключения и на форму калькулятора выводятся данные для выбора пользователя. Это запрос к базе данных.
Пример запроса:
$lenghts = $connect->query("SELECT * FROM length_lotok");Но нам также нужно поставить значения в порядке увеличения, поэтому изменим запрос:
$lenghts = $connect->query('SELECT * FROM length_lotok ORDER BY height_val');В запросе “Order by” - означает отсортировать полученные данные по значениям столбца, будь то строковые тогда порядок шёл по алфавиту, а если нет, тогда по возрастанию.
Вывод полученных данных осуществляется уже на внешней части front-end.