Как хранить услуги в базе данных?

Ссылка скопирована
1 ответ

Как хранить услуги в реляционной БД, если они имеют разную структуру? Допустим, у меня есть основная таблица с услугами, в которой одним услугам в качестве доп. данных нужно примитивное значение (число, строка), а другим— составное (объект или массив). Решения, которые приходят мне в голову, это:
- отдельные таблицы с доп. данными;
- колонка, которая хранит JSON-строку.
К тому же я думаю, что у услуг с простой структурой стоимость должна храниться в основной таблице, а со сложной—в этой сложной структуре, чтобы можно было понять, какая часть какую стоимость имеет.

Дополнительно:

более подробно напиши вопрос, что бы вы выстроить связи и модели, нужно знать что там за доп поле, и т.д

Ответы:

Вы можете взять за пример решение, которое использует под капотом wordpress, чтобы в одной таблице хранить разнородные данные.
Например, wp_posts связанная с wp_postmeta

Хранение полностью разнородных данные у одного объекта (услуги в вашем случае) - это в любом случае странно. Их нужно унифицировать хоть до какой-то степени, все-таки бд не должна превращаться в свалку.
В вашем случае подойдет обобщение до "объекта", который хранит в meta (по аналогии с wp) пары ключ:значение

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ольга Сеть Ответ

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

Прежде всего, необходимо определить структуру таблицы для хранения услуг. Вот пример SQL запроса для создания таблицы "services":

CREATE TABLE services (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2),
    duration INT,
    category VARCHAR(50)
);

CREATE TABLE services ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT, price DECIMAL(10, 2), duration INT, category VARCHAR(50) );

Здесь мы создаем таблицу "services" с полями id (идентификатор услуги), name (название услуги), description (описание услуги), price (цена услуги), duration (длительность услуги) и category (категория услуги).

Далее можно добавить несколько услуг в таблицу, используя следующий SQL запрос:

INSERT INTO services (name, description, price, duration, category) 
VALUES ('Услуга 1', 'Описание услуги 1', 50.00, 60, 'Категория 1'),
       ('Услуга 2', 'Описание услуги 2', 100.00, 90, 'Категория 2'),
       ('Услуга 3', 'Описание услуги 3', 75.00, 45, 'Категория 1');

INSERT INTO services (name, description, price, duration, category) VALUES ('Услуга 1', 'Описание услуги 1', 50.00, 60, 'Категория 1'), ('Услуга 2', 'Описание услуги 2', 100.00, 90, 'Категория 2'), ('Услуга 3', 'Описание услуги 3', 75.00, 45, 'Категория 1');

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

SELECT * FROM services;

SELECT * FROM services;

Этот запрос вернет все записи из таблицы services, включая все атрибуты услуг.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно