SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.12.2014 13:18:40

Лев
Участник
Зарегистрирован: 09.12.2014
Сообщений: 4

Архитектура базы данных

Добрый день! У меня в базе есть 3 таблицы:
1-я таблица - users (таблица пользователей, предоставляющих определенные услуги);
2-я таблица - categories (список категорий, каждый пользователь может выбрать категорию, под которую подходит его услуга);
3-я таблица - prices (для каждой категории есть свой прайс-лист, по задумке каждый пункт прайс-листа будет выполнен в виде отдельного поля таблицы, т.к. каждый пользователь будет выставлять свою цену на услугу);

Я пришел к выводу, что необходимо будет создать общую таблицу users_categories_prices, которая будет содержать следующие поля:
- user_id;
- category_id;
- price_id;
- cost (Стоимость услуги конкретного пользователя).

Есть ли какой-нибудь более гибкий вариант решения задачи? Возможно ли связать 3 таблицы со связью "многие ко многим"?

Неактивен

 

#2 11.12.2014 15:02:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Архитектура базы данных

Не очень понятно, что вы подразумеваете под прайсами. Есть пользователи, услуги и категории.
Общая таблица будет иметь вид:
- user_id;
- услуга_id;
- cost.

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

Неактивен

 

#3 11.12.2014 15:49:07

Лев
Участник
Зарегистрирован: 09.12.2014
Сообщений: 4

Re: Архитектура базы данных

Прошу прощения, я плохо описал проблему. У нас есть много пользователей (таблица users), есть каталог услуг (categories), допустим категории следующие: "Диагностика автомобиля", "Тормозная система", "Покраска автомобиля".
Каждый пользователь выбирает категорию, в которой предоставляет свои услуги и заполняет прайс-лист данной категории: для категории "Диагностика автомобиля" пункты прайс-листа следующие - "Комплексная диагностика", "Диагностика задней подвески", "Диагностика передней подвески", для категории "Тормозная система" - "Замена тормозного барабана", "Замена троса ручника", "Ремонт суппорта" и т.д.
Как мне лучше организовать структуру этих таблиц, пока я только вижу решение, которое описывал выше. Суть в том, что у каждого пользователя будут уникальные цены на оказываемые услуги.

Неактивен

 

#4 11.12.2014 16:10:05

Лев
Участник
Зарегистрирован: 09.12.2014
Сообщений: 4

Re: Архитектура базы данных

Такой вариант ещё есть
http://www.azilla.ru/media/img/prices.png

Неактивен

 

#5 11.12.2014 17:22:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Архитектура базы данных

Последний вариант это как раз то, о чем я писал с точностью до терминологии (у вас слово прайс, у меня услуга). Его и стоит принять за рабочий.

Неактивен

 

#6 11.12.2014 17:31:25

Лев
Участник
Зарегистрирован: 09.12.2014
Сообщений: 4

Re: Архитектура базы данных

Спасибо Вам огромное )).

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson