|
|
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовМСУ в прюдбанничке, хехе, братва нагрянула умишком то никак??? не вЪезжаете???? или просто ваш ынстрУмент не позволяет быстро все это сделать? Ну как всегда, Сахушка. Все дураки, один Ваш софтошлак все задачи решает Пишите еще, не останавливайтесь ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 17:40 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Cheerful CalfКатегории - торты, диваны Цвета - коричневый, красный Тип покрытия - кожа, шоколадная глазурь, велюр Продукт - Торт "Нежность", диван "Серерио" Покрытия - шоколадная глазурь коричневая, Кожа коричневая, велюр красный надо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью. Какие есть более правильные варианты с точки зрения нормальной бд?Ты ждешь полную схему связей ? Или что ? Первоначальная схема больше задаёт вопросов, чем даёт ответов. Варианты уже были предложены. Тебе только надо определиться, что от чего зависит. Есть предположение, что типы покрытий должны зависеть от категории товаров. Но ! Неизвестна арность отношения, так как непонятно по каким признакам будет происходить категоризация. Пока ты с этим не определишься, можно будет долго обсуждать сферического коня в вакууме. Как на схемах Сахавата... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 17:49 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
не понимаю что не понятного. я же четко написал - "надо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью", само собой чтобы торт не обтянули велюром тоже. Все! не надо додумывать что там у меня еще есть и может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 17:53 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
ChAЕсть предположение, что типы покрытий должны зависеть от категории товаров.опять не понятно - почему это только предположение?? я четко сказал, что так и должно быть, даже таблицу "ограничения" нарисовал, где тип покрытия писобачивается именно к категории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 17:54 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Cheerful Calf, не вижу, уже расшифровали решение или нет.... Ну в частном случае можно так: (в Визии я не проффессионал :( ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 18:23 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Cheerful Calf, Каждая запись из "Группы Покрытий для Товара" Ссылается на свой товар, "Торт" например и на Группу покрытий "Для еды" На "Группу покрытий" ссылается соответственная запись из "Типов покрытий", и в случае с тортом это должны быть Глазурь и Сливки. Такая схема позволяет (если нужно) для автомобиля присоединить группу покрытий для мебели, и покрыть все велюром... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 18:28 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Cheerful CalfВсе! не надо додумывать что там у меня еще есть и может быть.Слишком часто в подобных ситуациях появлялся рояль из кустов со словами "А вот тут ещё..." Cheerful Calfдаже таблицу "ограничения" нарисовал, где тип покрытия писобачивается именно к категории.Так вариант уже были предложены. Чтобы ограничение работало, то либо категория должна зависеть от типа покрытия, либо тип покрытия от категории. У тебя этой зависимости на первоначальной схеме нет. Вот один из вариантов: КатегорияIDName ПродуктКатегория_IDIDName PK (Категория_ID, ID); FK (Категория_ID) => Категория(ID) Тип покрытияIDКатегория_IDName PK (Категория_ID, ID);FK (Категория_ID) => Категория(ID) ПокрытияКатегория_IDIDТип покрытия_IDName PK (Категория_ID, ID);FK (Категория_ID, Тип покрытия_ID) => Тип покрытия(Категория_ID, Тип покрытия_ID) ОрдерСтрокаIDКатегория_IDПродукт_IDПокрытие_IDName PK (неважно, например - ID); FK1 (Категория_ID, Продукт_ID) => Продукт(Категория_ID, ID) FK2 (Категория_ID, Покрытие_ID) => Покрытие(Категория_ID, ID) Где-то так. В результате, принадлежность Продукт и Покрытия только одной категории будет диктоваться самой схемой данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 18:30 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
ChAТолько если диван и стул будут в разных категориях. Я именно об этом. То, что категории строятся "не по покрытиям" - имхо очевидно. ChAВпрочем, при таком варианте, ничто не помешает сделать связь между шоколадной глазурью и мебелью. Помешает. Эксперт по предметной области, который должен был бы внести в настройки такую пару. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 20:14 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
ChA, а где цвета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 21:33 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
softwarerChAТолько если диван и стул будут в разных категориях. Я именно об этом. То, что категории строятся "не по покрытиям" - имхо очевидно.Я где-то написал обратное ? Но типы покрытия зависят от категории, если верить ТСCheerful CalfChAЕсть предположение, что типы покрытий должны зависеть от категории товаров.опять не понятно - почему это только предположение ?? я четко сказал, что так и должно быть, даже таблицу "ограничения" нарисовал, где тип покрытия писобачивается именно к категории.Хотя я допускаю, что он не совсем понял смысла моего предположения. Вы, фактически, предложили сделать то же самое, что он и так уже сделал в стартовом топике. Т.е., просто ввести дополнительный справочник всевозможных допустимых комбинаций. Что он не сделал, так этоsoftwarerТип покрытия связать с категорией (многие ко многим). Из продуктов ссылаться на эту связку .Но смысл и достаточность такой связи неочевидны, так как она, на мой взгляд, никак softwarerChA не помешает сделать связь между шоколадной глазурью и мебелью. Помешает. Эксперт по предметной области, который должен был бы внести в настройки такую пару.Как вы собираетесь проверять эту настройку, кроме использования знаний новой сущности "эксперта" ? Тригерами или процедурами ? Если "нет", то как она может помешать в строку ордера добавить "диван" в качестве продукта и в качестве покрытия - "синюю шоколадную глазурь" обычным insert-ом ? Если "да", то и первоначального варианта ТС вполне достаточно для подобного рода проверки. Не то чтобы проверка в триггерах или процедурах как-то задевала мои религиозные чувства, но лично я предпочитаю по возможности реализовать ограничения декларативно и по возможности именно тем способом, который для этого формально предназначен. Cheerful Calfа где цвета?Предполагал, что это очевидно. Добавьте таблицу цвета и установите связь(FK) с таблицей покрытий, как это было изображено в Вашем первом топике. Просто она не имеет отношения к озвученной Вами проблеме. P.S. Хотя мне кажется, было бы разумнее вынести ссылку на цвет покрытия в строку ордера. Но не настаиваю, Вам виднее. P.P.S. На всякий: связи могут устанавливаться не только с помощью PK, но и UQ. Поэтому вполне возможно заменить в моем примере PK, на UQ. А роль PK будет традиционно выполнять ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 23:52 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Compositum, дА ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 23:57 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Compositum, питому что такова сеави не не кодд опИсывает жисть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2009, 23:58 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
ChA, я не въехал или так и предлогалось?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 09:59 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
А циклов все больше и больше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 10:59 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Владимир СанычДа, мне тоже это не дает покоя. А вот попробовал сделать справочник (продукт, покрытие, цвет, ширина, высота, цена) чтобы циклов не было - получил для 40 товаров 22500000000 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 11:10 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
ChAНо типы покрытия зависят от категории, если верить ТС "Зависят" не означает "определяются". Велюр может быть покрытием для кресла или дивана, может - для куртки. Ваша схема требует в этом случае ввести в справочник два велюра. Что имхо - недостаток, который стоит иметь в виду. ChAКак вы собираетесь проверять эту настройку, кроме использования знаний новой сущности "эксперта" ? Тригерами или процедурами ? Если "нет", то как она может помешать в строку ордера добавить "диван" в качестве продукта и в качестве покрытия - "синюю шоколадную глазурь" обычным insert-ом ? Помешает очень легко - отсутствием поля, куда можно было бы внести такую информацию. В строку ордера добавляется "диван артикул такой-то", согласны? Это ссылка на таблицу продуктов (внешний ключ). В таблице продуктов у "диван артикул такой-то" стоит ссылка на развязку (которая у ТС названа "ограничения"). В этих ограничениях эксперт вводит: категория=диван, покрытие=велюр. И до тех пор, пока эксперт не введёт категория=диван, покрытие=глазурь, ни один insert в ордера и в продукты ничего такого сформировать не сможет. Если полагать изделия уникальными, скажем "диваны и торты на заказ", таблица продуктов становится лишней, тогда ссылка на ограничения идёт прямо из строки ордера, принцип остаётся тот же. ChAно лично я предпочитаю по возможности реализовать ограничения декларативно и по возможности именно тем способом, который для этого формально предназначен. И? Я разве где-то протестую? Я бы предпочёл, чтобы смотрели написанное мное, а не фантазировали "вместо меня". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 14:15 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Владимир СанычА циклов все больше и больше... А что в них не даёт спать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 14:15 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
softwarerВладимир СанычА циклов все больше и больше... А что в них не даёт спать? полагаю скорость ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 14:26 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
Cheerful Calfили так и предлогалось??Похоже всё-таки не въехали. Во-первых, связь от "Категория" к "Покрытия" это не моё, в ней нет смысла, так как они уже связаны через "Типы покрытия". Кроме того, от "Тип покрытия" к "Покрытия" связь насколько понимаю "1 ко многим", так же как и от "Продукты" и "Покрытия" к "ОрдерСтрока", причем в последнем случае это обычные одиночные, а не двойные непонятные связи. В общем, ещё раз, но уже на MS SQL DDL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. P.S. Не понимаю, о каких-таких "циклах" вы здесь толкуете, в предлагаемой схеме они отсутствуют. Здесь обычный однонаправленный граф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 14:30 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
softwarerChAто как она может помешать в строку ордера добавить "диван" в качестве продукта и в качестве покрытия - "синюю шоколадную глазурь" обычным insert-ом ? Помешает очень легко - отсутствием поля, куда можно было бы внести такую информацию. В строку ордера добавляется "диван артикул такой-то", согласны? Это ссылка на таблицу продуктов (внешний ключ). В таблице продуктов у "диван артикул такой-то" стоит ссылка на развязку (которая у ТС названа "ограничения"). В этих ограничениях эксперт вводит: категория=диван, покрытие=велюр. И до тех пор, пока эксперт не введёт категория=диван, покрытие=глазурь, ни один insert в ордера и в продукты ничего такого сформировать не сможет.А куда это поле денется-то ? Или предлагаете в строке ордера из комбинации (Продукт, Покрытие) выбросить Покрытие ? Если "нет", то в строку ордера благополучно вставляем диван с шоколадной глазурью, так как Покрытие не контролируется явно заданными ограничениями. Если "да", то где связь между конкретным продуктом и конкретным покрытием ? В предлагаемой Вами схеме в продуктах я вижу только ссылку на связь категорий и типов покрытий . В общем, не мешало бы как-нибудь более внятно проиллюстрировать все необходимые изменения первоначальной схемы ТС. Тогда можно будет разговаривать более предметно, а не ждать очередных кроликов из шляпы. softwarerВелюр может быть покрытием для кресла или дивана, может - для куртки. Ваша схема требует в этом случае ввести в справочник два велюраЛично я не знаю, какие варианты могут встречаться у ТС, при первой же попытке прояснить подробности, он настоятельно попросил не додумывать за него, а решить конкретную задачу. Поэтому фантазировать на тему, что может быть, а чего нет, я не берусь. Впрочем, если понадобиться рассматривать множественные связи между категориями и типами покрытий, то не составит большого труда слегка расширить и перекроить предлагаемую схему, чтобы ограничения по-прежнему контролировались самой схемой данных. softwarerЯ бы предпочёл, чтобы смотрели написанное мное, а не фантазировали "вместо меня".Я тоже, но люди такие фантазеры, все время норовят прочитать между строчек. Какая жалость, что нет телепатии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 15:39 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
ChAИли предлагаете в строке ордера из комбинации (Продукт, Покрытие) выбросить Покрытие ? Да, безусловно. Это вообще.. странная мысль иметь их рядом, поскольку Покрытие - очевидный атрибут Продукта. ChAто где связь между конкретным продуктом и конкретным покрытием ? Согласен, забыл оговорить этот момент. Я пока не вижу смысла в сущности "конкретное покрытие". По изложенному в неё кроме типа покрытия входит только цвет, и имхо этого мало; удобнее вставить цвет в продукты. ChAЛично я не знаю, какие варианты могут встречаться у ТС, Я тоже. Поэтому я отметил общий недостаток схемы, нигде не сказав "её нельзя применять". Даже если у ТС встречается такой вариант, дублирование может в его ситуации быть более удачным ходом. Просто об этом надо подумать заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 16:33 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
softwarerудобнее вставить цвет в продукты.тогда надо будет два ограичения - торт не только не может быть покрыт велюром, но и красным шоколадом. в реале есть 20 диванов и 750 цветов/покрытий, если делать полный справочник диван/цвет/покрытие - уже выходит довольнотаки большой объем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 16:57 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
softwarerChAИли предлагаете в строке ордера из комбинации (Продукт, Покрытие) выбросить Покрытие ? Да, безусловно. Это вообще.. странная мысль иметь их рядом, поскольку Покрытие - очевидный атрибут Продукта.Т.е., очередной кролик, кроме добавления связи надо еще и поле выбросить из строки ордера. А без фантазии было так простоsoftwarerТип покрытия связать с категорией (многие ко многим). Из продуктов ссылаться на эту связку.IMHO, очевидность является прерогативой ТС и он тоже сильно просил за него не фантазировать. Вот если судить по его первоначальной схеме, то покрытие не является атрибутом продукта. softwarerChAто где связь между конкретным продуктом и конкретным покрытием ? Согласен, забыл оговорить этот момент. Я пока не вижу смысла в сущности "конкретное покрытие". По изложенному в неё кроме типа покрытия входит только цвет, и имхо этого мало; удобнее вставить цвет в продукты.Ну вот как тут можно было обойтись только тем, что Вы пишете ? Там выбросили, здесь вообще всё не так, начинает напоминать допрос партизана. Может было бы проще нарисовать схему данных или DDL в качестве иллюстрации, дабы не оставлять место фантазиям читателям ? softwarerChAЛично я не знаю, какие варианты могут встречаться у ТС, Я тоже. Поэтому я отметил общий недостаток схемы, нигде не сказав "её нельзя применять". Даже если у ТС встречается такой вариант, дублирование может в его ситуации быть более удачным ходом. Просто об этом надо подумать заранее.Абсолютно здравый подход, ноCheerful Calfне надо додумывать что там у меня еще есть и может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 17:04 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
>>Покрытие - очевидный атрибут Продукта я говорил, если описать справочник продуктов со всевозможномы покрытиями - одних диванов 15к, а где еще торты да и не дай бог раскладушки на будущее.... а разложив это по таблицам получается оч хорошо - 700 цветов, 20 типов покрытий, 20 товаров. Но возникла проблема, что на торт велюр натянут.. каждый "продаваемый" продукт индивидуален, то есть береться продукт простой, покрываетсяя покрытием и продается (ордер роуз). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 17:15 |
|
||
|
ввести ограничения (логику)...
|
|||
|---|---|---|---|
|
#18+
CompositumСахават ЮсифовМСУ в прюдбанничке, хехе, братва нагрянула умишком то никак??? не вЪезжаете???? или просто ваш ынстрУмент не позволяет быстро все это сделать? Согласно вашей схеме, Чирфа будут интересовать только диваны и торты? А для каждого типа будете новую таблу создавать, т.е. "доплетать структурку" ? ;) п.с. прямо как паучокс... :) Я так и не пнял, что тебя пугает? Ведь таблицу то на самом деле никто не генерирует. Просто одни и те же вещи переклассифицируются. Множественная классфификация. Ты наверное согласишься что, "Диван" все же не "Торт" - КОГДА ВОПРОС ИДЕТ о "Покрытии"? и "Цвет покрытии" дивана и торта вооще то определяется МАТЕРИАЛОМ откуда этот "цвет" получается??? Описывать жизнь надо как можно точнее, введя дополнительные классификаторы, а КАК ВСЕ ЭТО ХРАНИТЬ и к нему достучаться - отдельный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2009, 19:06 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36044066&tid=1543189]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 426ms |

| 0 / 0 |
