|
|
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
Задача состоит в следующем: Есть Услуги на стоимость которых влияют разные параметры (кол-во параметров от 1 до n). Услуги хранятся в таблице услуг, параметры - в табл. параметров и таблица связи параметров и услуг. Вопрос: Как правильно привязять цену к услуге с учетом n-ого количества параметров? Например: Есть два параметра "Производитель" и "Тип салона". Есть два производителя "П1" и "П2" и два типа салона "Т1" и "Т2". В конечном результате нужно иметь Услуга1 при П1 , Т1 стоит 100 Услуга1 при П1 , Т2 стоит 120 Услуга1 при П2 , Т1 стоит 90 Услуга1 при П2 , Т2 стоит 110 ну и т.д. Посоветуйте пожалуста, как правильно это оформить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 16:39 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
AndreyG_80Задача состоит в следующем: Есть Услуги на стоимость которых влияют разные параметры (кол-во параметров от 1 до n). Услуги хранятся в таблице услуг, параметры - в табл. параметров и таблица связи параметров и услуг. Вопрос: Как правильно привязять цену к услуге с учетом n-ого количества параметров? Например: Есть два параметра "Производитель" и "Тип салона". Есть два производителя "П1" и "П2" и два типа салона "Т1" и "Т2". В конечном результате нужно иметь Услуга1 при П1 , Т1 стоит 100 Услуга1 при П1 , Т2 стоит 120 Услуга1 при П2 , Т1 стоит 90 Услуга1 при П2 , Т2 стоит 110 ну и т.д. Посоветуйте пожалуста, как правильно это оформить. Введите производителя в таблицу связи услуг и параметров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 17:00 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
DookВведите производителя в таблицу связи услуг и параметров А, если парамаметров будет больше. Тогда прийдется добавлять столбцы в таблицу, ну и если параметры будут удалятся или менятся - тогда прийдется постоянно в таблицу добавлять и удалять столбцы. Этот вариант не проходит. Я думаю добавить отдельную таблицу в которой хранились бы услуги, параметры и цены, но как правильно сделать эту таблицу я никак не могу придумать :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 17:09 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
Есть еще вариант. Создать следующую таблицу: IDУслуги, второй столбец - текстовый и цена В текстовом столбце хранятся IDшники параметров через какой либо разделитель ну и в третьем - цена. Этот вариант, впринцыпе, работает, но он мне что-то не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 17:16 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
AndreyG_80Задача состоит в следующем: Есть Услуги на стоимость которых влияют разные параметры (кол-во параметров от 1 до n). Услуги хранятся в таблице услуг, параметры - в табл. параметров и таблица связи параметров и услуг. Вопрос: Как правильно привязять цену к услуге с учетом n-ого количества параметров? Например: Есть два параметра "Производитель" и "Тип салона". Есть два производителя "П1" и "П2" и два типа салона "Т1" и "Т2". В конечном результате нужно иметь Услуга1 при П1 , Т1 стоит 100 Услуга1 при П1 , Т2 стоит 120 Услуга1 при П2 , Т1 стоит 90 Услуга1 при П2 , Т2 стоит 110 ну и т.д. Посоветуйте пожалуста, как правильно это оформить. 1. "Таблица 1" IDПараметр, ТипПараметра, IDЗначенияПараметра Сочетание типов и значений параметров должно быть уникально. 2. "Таблица 2" Услуга, IDПараметра, Цена. При выборке находите строки с нужным сочетанием Услуга, IDПараметр. А насчет правильно или неправильно, это понятие относительное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 17:37 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
AndreyG_80Есть еще вариант. Создать следующую таблицу: IDУслуги, второй столбец - текстовый и цена В текстовом столбце хранятся IDшники параметров через какой либо разделитель ну и в третьем - цена. Этот вариант, впринцыпе, работает, но он мне что-то не нравится. Вариант, в принципе, имеет право на жизнь, но тогда проблематично строить запросы. Лучше тогда выделить таблицу цен и связать таблицу услуг с таблицей цен через промежуточную, в которую внести Idы параметоров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 17:41 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
AndreyG_80Тогда прийдется добавлять столбцы в таблицу, Очень страшно AndreyG_80ну и если параметры будут удалятся или менятся - тогда прийдется постоянно в таблицу добавлять и удалять столбцы. Хм. То есть Вы хотите сэкономить на десятисекундной операции там, где потребуется минимум день работы на прочие действия, связанные с изменением списка параметров. Ценой этого будет кривая структура БД, с решениями типа "текстовый список id через запятые". Логично, черт возьми :)) Если "параметр" - практически виртуальная сущность, такая, что с точки зрения системы существуют просто "тип параметра" и "набор значений этого типа", если в системе не присутствует никакой дополнительной информации, например, дополнительных атрибутов "производителя" или "типа салона" - нужно соответственно проработать хранение параметров и сделать развязку Услуга - Цена - НаборПараметров. Иначе - делайте разные столбцы.. или делайте геморрой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 17:43 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
softwarerХм. То есть Вы хотите сэкономить на десятисекундной операции там, где потребуется минимум день работы на прочие действия, связанные с изменением списка параметров. Ценой этого будет кривая структура БД, с решениями типа "текстовый список id через запятые". Логично, черт возьми :)) Нет, если бы у меня была одна база тогда я добавлял и удалял бы столбцы. Но у меня одня центральная база и куча клиентских баз, в которые должня выгружаться услуги с ценами и параметрами, причем в разные клиентские базы должня выгружаться разные услуги, парамеры и цены. Если структура базы и таблицы у меня будут меняться, тогда я во всей этой каше концов не собиру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 18:32 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
Я, тут, обдумываю еще один вариант. Создать таблицу (добавить в таблицу соответствий) в которой хранятся: код услуги, код параметра и цена. В таблице услуг тоже цена услуги. Потом сумировать цену услуги из таблицы услуг и цену по каждому параметру даной услуги. Сумма этого всего и будет являться ценой услуги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 18:46 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
DinamoА насчет правильно или неправильно, это понятие относительное. Вообще-то Вы правы. Могу перефразировать, мне нужно что-то универсальное, чтоб пользователи могли создавать всевозможные услуги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 18:55 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
Набор значений параметров, концептуальная ER диаграмма: Каждая Цена должна Задаватья_для одной Услуга . Каждая Цена должна Задаватья_для одного НаборЗначенийПараметров . Кажый ЭлементНабораЗначенийПараметров должен Входить_в один НаборЗначенийПараметров . Кажый ЭлементНабораЗначенийПараметров должен Относиться_к одному Параметр . AndreyG_80Я, тут, обдумываю еще один вариант. Создать таблицу (добавить в таблицу соответствий) в которой хранятся: код услуги, код параметра и цена. В таблице услуг тоже цена услуги. Потом сумировать цену услуги из таблицы услуг и цену по каждому параметру даной услуги. Сумма этого всего и будет являться ценой услугиЕсли это нормально ложится на логику приложения, и нет ограничений на комбинации (Т1 П2 можно, Т2 П2 нельзя), то лучше так. Видимо, под кодом параметра имеется ввиду код значения параметра? (Код Т1 - "Тип салона=1" ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 11:45 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
ModelRВидимо, под кодом параметра имеется ввиду код значения параметра? (Код Т1 - "Тип салона=1" ). Под кодом параметра или кодом услуги имеется ввиду IDшник параметра или IDшник услуги ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 12:33 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
ModelRЕсли это нормально ложится на логику приложения, и нет ограничений на комбинации (Т1 П2 можно, Т2 П2 нельзя), то лучше так. Ограничений на комбинации нет. Но, правда под логику это не совсем ложится. Получится, что пользователь должен будет ввести минимальную стоимость услуги, а стоимость каждого параметра вводить как добавочную стоимость услуги чтоб в суме получилась желаемая стоимость услуги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 12:42 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
Ну если Т=1 всегда, для данного типа услуги, добавляет одну и ту же сумму Nт1 (и при П=1 и при П=2 и т.д.), то пользователь еще и спасибо скажет, что не заставили Nт1 вводить много раз либо каждый раз считать на бумажке итог на услугу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 14:43 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
Как вы смотрите на такой вариант. Входные параметры : есть три таблицы (Услуги, ГруппыПараметров, Параметры). таблица Услуги (IDУслуги / Название) таблица ГруппыПараметров (IDГруппыПараметров / Название) таблица параметров (IDПараметра / Название / IDГруппыПараметров) Привязка цены к услуге : для этого две таблицы (Цены на услуги и таблица комбинаций параметров) таблица цены на услуги (IDУслуги / IDКомбинацииПараметров / Цена) таблица комбинаций параметров (IDКомбинации / IDГруппыПараметров / IDПараметра) Получается, что напротив услуги указываем определенную ссылку на комбинацию параметров и цену при на услугу при этой комбинации. А через таблицу комбинаций можем посмотреть какие параметры входят в услугу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 14:55 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
ModelRто пользователь еще и спасибо скажет, что не заставили Nт1 вводить много раз либо каждый раз считать на бумажке итог на услугу.Это врядли, у нас на фирме люди консервативные, заставить их формировать цену на услугу по новому - это процес не из легких ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 14:59 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
AndreyG_80Нет, если бы у меня была одна база тогда я добавлял и удалял бы столбцы. OK, зафиксировали. AndreyG_80 Но у меня одня центральная база и куча клиентских баз, в которые должня выгружаться услуги с ценами и параметрами, причем в разные клиентские базы должня выгружаться разные услуги, парамеры и цены. Ну и пусть выгружаются разные услуги, параметры и цены. Все названное - данные. Какое отношение это имеет к структурам? Кому будет плохо от того, что в схеме будет десяток пустых таблиц? AndreyG_80 Если структура базы и таблицы у меня будут меняться, тогда я во всей этой каше концов не собиру. Хм. Принцип я уже назвал. Либо все параметры похожи как братья-близнецы - тогда можно и нужно делать универсальную структуру. Либо же они различаются по бизнес-логике - и тогда собирать концы придется при любой реализации; все, что можно сделать - либо сделать эту реализацию удобной, либо добавить своих грабель. AndreyG_80 Я, тут, обдумываю еще один вариант. Создать таблицу (добавить в таблицу соответствий) в которой хранятся: код услуги, код параметра и цена. В таблице услуг тоже цена услуги. Потом сумировать цену услуги из таблицы услуг и цену по каждому параметру даной услуги. Сумма этого всего и будет являться ценой услуги Хм. А кто обещал Вам, что в систему не потребуется ввести данные, не ложащиеся в эту схему? Насколько я понимаю, Вам придется двигаться от фактов типа "такая-то услуга с такими-то параметрами стоит столько-то", где "столько-то" определяется труднопрогнозируемым образом, вплоть до желания левой пятки гендиректора. Для того, чтобы имея набор подобных фактов, расставить цены составляющих - придется решить систему уравнений, причем совершенно не факт, что она имеет хотя бы одно решение :) Другой вопрос, если описанное Вами совпадает с логикой ценообразования. В этом случае, если заказчик даст гарантию, что цены всегда формируются именно так, так и надо делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 15:29 |
|
||
|
Как правильно сделать структуру БД?
|
|||
|---|---|---|---|
|
#18+
AndreyG_80Как вы смотрите на такой вариант. авторЕсть два параметра "Производитель" и "Тип салона". Есть два производителя "П1" и "П2" и два типа салона "Т1" и "Т2". Терминология не сходится. Есть параметры и есть значения параметров. Цена зависит от значений ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2006, 09:58 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33556852&tid=1545401]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
98ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 474ms |

| 0 / 0 |
