|
|
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Разрабатываю пару таблиц. Одна - группа товара. Вторая - сам товар. Третья - связь на значения атрибутов товара. Четвёртая - связь на значения атрибутов группы Итак, у товара, допустим, есть 2 атрибута: мощность и вес. В поиске отобрать записи по такому условию, отобрать не составляет труда. Однако, группа этого товара также имеет общие атрибуты для товара, например, цвет. В результате товар имеет 3 атрибута: Мощность Вес Цвет Мне по условию надо найти "белый" товар, который весит "5кг". Но я незнаю, в какой таблице хранятся каждый из атрибутов. Т.е. это по условию. Вопрос такой, посоветуйте пожалуйста схему для таблиц, чтобы можно было хранить и атрибуты групп и атрибуты товара, и при этом получать выборку товара с учётом атрибутов группы. Уже ломаю голову неделю, ничего на ум не приходит. Перебрал кучу вариантов и совсем запутался. Разве что хранить для каждого товара ещё и атрибут группы, т.е. в данном случае и цвет. Но это крайне не хочется делать, на то есть свои веские причины. В группе товара элемент может иметь свой набор атрибутов. Буду рад любому размышлению и совету. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 22:26 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Таблица групп и товаров единая: "ТМЦ". Группы при необходимости помечаются признаком. Товары имеют ссылки на эту же таблицу - что обеспечивает хранение о вхождении товара в группы. Значения атрибутов хранить в одной таблице, в которой есть ссылка на ТМЦ. Выборка получается простая: выбрать все товары, атрибуты которых ссылаются на Ид товара или ИдГруппы, в которую входят эти товары. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 06:16 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
о, неплохое начало. с большего трудностей не видно. сейчас попробую сэмулировать обстановку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 12:32 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
astonВыборка получается простая: выбрать все товары, атрибуты которых ссылаются на Ид товара или ИдГруппы, в которую входят эти товары. в общем, не совсем получается сделать такую выборку. я говорил, о том, что есть условие, что я незнаю кому принадлежит атрибут, группе или продукту. так вот как отобрать белый товар с весом в 5 кг. вот таблицы: Код: 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. можно ли както получить такой товар именно по атрибуту, без указания кому атрибут принадлежит: группе или продукту. т.е. результатом должа стать запись с id=5 из таблицы @products ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 17:27 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Под рукой только Oracle 7.3, поэтому наименование таблицы values изменил, т.к. "values" в Oracle - reserved. На выбор: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Переделайте под MSSQL с использованием его нативных конструкций. Например, EXISTS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 19:09 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Да, и учтите, что приведенная вами структура таблиц позволит выполнять поиск только по точному соответствию значений, но не по диапазону (например, все товары с мощностью до 300 Вт). Поэтому я бы вообще выкинул таблицу values и переопределил бы таблицу products_values как Код: plaintext 1. 2. 3. 4. 5. Соответственно, и запросы чуть подкорректировать придется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 19:27 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
aston, большое спасибо за помощь. да, безусловно, товар понадобится отбирать и с применением диапазона в атрибутах. тогда получается, что выкинув таблицу values и приведению таблицы products_values в вид, как вы рекомендуете: Код: plaintext 1. 2. 3. 4. 5. таблица values, подрузамевала хранение именно эталонных значений. т.е. чтоб не вбивать для каждого товара что он весит 5кг, а просто указывать ссылку на таблицу values, где это значение в 5кг будет в единственном виде. исходя из вышесказанного, может есть смысл хранить в values просто ещё и атрибут группы но для продукта? а для группы вообще ничего не указывать. т.е. просто вбивать для каждого товара ещё и то, какой он белый или чёрный. и всё, может так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 22:57 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Нет, не вынудит. product_property_values ссылается на product, в которой хранятся как группы, так и товары. Смотря какой смысл вы вкладываете в "группы". Что это такое в вашей предметной области? Про эталонные значения подумайте - нужны ли они вам. С атрибутами "Мощность" и, тем более, "Вес", их применение имхо не уместно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 05:59 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
да, группы мне необходимы для группирования определённого типа товара. и чтобы не вбивать для каждого товара повторяющийся атрибут , я думал хранить его общим для всей группы. например, группа товара: масло, общий атрибут группы: подсолнечное, в эту группу входят товары: масло рафинированное 100мл. и масло нерафинированное 200мл., эти товары сгруппированы по атрибуту подсолнечное. и этот атрибут автоматически принадлежит каждому товару группы, т.е. реально выходит, что масло: Код: plaintext 1. 2. ещё одна группа товара: масло, общий атрибут группы: моторное, в эту группу входят товары: масло синтетическое 1л. и масло минеральное 2л., эта другая группа, и общий атрибут для неё: моторное, и получается, что каждый товар этой группы инкапсулирует в себя ещё и общий для группы атрибут: Код: plaintext 1. 2. вот. это я вкладывал в понятие групп. я специально и зател этот вопрос, чтобы выяснить, насколько реально жизнеспособна такая схема. но если это слабая конструкция, то я лучше откажусь от неё и выслушаю другое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 09:28 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Несколько озадачен. Я понимаю, номализация, все дела. Но мне кажется, вы пытаетесь нормализовать русский язык и арифметику впридачу. Между "маслом подсолнечным" и "маслом моторным" общего только слово "масло" и больше ничего. Такая же пропасть между "белым крокодилом" и "белым самолетом". Надо различать функциональные и качественые характеристики предметов. "Подсолнечное" и "моторное" - это функциональные характеристики условного предмета "масло", которые употребялются только вместе с самим предметом и никак не поотдельности. Постройте семантическую модель вашего каталога товаров и вы поймете, какие вам нужны сущности и связи. Например, классика: - ТМЦ делятся на виды сообразно своему функциональному предназначению - каждый вид ТМЦ имеет свой набор атрибутов, характерных исключительно и только для данного конкретного вида - каждая ТМЦ в своем описании содержит значения атрибутов, характерных для того вида ТМЦ, к которому она относится Ну и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 11:41 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
> Например, классика: Это классическая чушь. Я упоминал в одном из сообщений наличие принципиальной разницы между логикой Галилея и Аристотеля. Логика Аристотеля не работает для проектирования баз данных. Это нужно просто запомнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 12:48 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Для проектирования баз данных очень подходят бизнес-требования, являющиеся основой для построения семантической модели. Бизнес крайне далек от науки в части любви к искусству. Примеры приводить, когда системы на ужасно (с точки зрения теории) спроектированных БД являются лидерами рынка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 14:34 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
> Примеры приводить Не нужно. Примеры иллюстрируют закон Парето, который в данном случае формулируется как "80% населения Земли - бараны". И это ни разу не является поводом для тиражирования ошибок. Вы должны понимать, что классификация по функциональным признакам условна. "Бизнес-требования" - это вообще бессмысленный набор букв. И с семантической моделью этот набор букв никак не связан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 17:27 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Гхм, простите, а что мне делать? Всё-таки, складывать все атрибуты для каждого товара? Так лучше делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2009, 21:11 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
> а что мне делать? Это хороший вопрос. Для начала определитесь, что вы вообще собираетесь описывать. Казалось бы, простая характеристика - цвет, а идентифицировать его можно по разному. Для пре-пресс это может быть идентификатор калибра, спектр или измеренная величина, для потребительской характеристики - приближенное значение или значение, вообще с цветом ничего общего не имеющее (типа цвета кузова автомобиля "хамелеон"), а для, например, реставрационного стоматологического материала - идентификатор палитры вендора, причем, у каждого вендора палитра уникальна. Построить исчерпывающе полную модель сложно, недостаточно задействовать только семантическую модель. На вашем месте я бы выделил две большие группы признаков - технические (в т. ч. технологические) и потребительские. Среди технических признаков я бы выделил относительно хорошо стандартизованные (электропитание, упаковка, физическая форма и размеры и пр.) и создал бы для них отдельную структуру данных. А вот с оставшимися техническими и потребительскими характеристиками можно поступать по-разному, в зависимости от того, для чего будет использоваться база данных. Вообще нормальный процесс в данном случае - постоянное уточнение модели. Скажем, смогли выделить некий функциональный конструктив у некоторой группы товаров - построили его модель, завели новую ревизию структуры данных и значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 01:36 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Кошмар. p.s. "Цвет" потребительский, "Цвет" в стоматологии, "Цвет" автомобильный, "Цвет" нации - это разные виды атрибутов, имеющих одно общее слово "цвет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 06:01 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
palladin600Гхм, простите, а что мне делать? Всё-таки, складывать все атрибуты для каждого товара? Так лучше делать? Да. Потому что ваши "группы" - это не группы товаров, а группы атрибутов товаров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 07:09 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
> p.s. "Цвет" потребительский, "Цвет" в стоматологии, "Цвет" автомобильный, "Цвет" нации - это разные виды атрибутов Цвет нации - это бессмысленное определение. Все остальное - характеристика восприятия глазом света, сформулированная в разных контекстах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 10:31 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
astonТовары имеют ссылки на эту же таблицу Запомнил. astonВыборка получается простая: выбрать все товары, атрибуты которых ссылаются на Ид товара или ИдГруппы, в которую входят эти товары. Вспомнил первое и задумался, как быть с "прародителями". Всячески поддерживаю позицию guest-а в части атрибутов номенклатуры (уточнение модели). По собственному опыту - все прочие велосипеды работают плохо и недолго, либо не работают вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 10:57 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Мне кажется, прежде, чем принимать какое-то решение, стоит подробнее изучить, как организованы группы товаров в существующих ИС. В поисковике просто набрать 'справочник товарных групп' - будет море примеров. По поводу дерева тоже нужно подумать, прежде чем реализовывать эту схему. Удобно, конечно, но вроде бы не рекомендуется хранить группы и товары в одной таблице, поскольку это разные сущности. На форуме встречались обсуждения на эту тему. Может быть, для Вас это и несущественно, но ознакомиться стоит. И еще - атрибуты будут иметь только строковые значения? Числовые, например, не предполагаете использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 11:17 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
> Всячески поддерживаю позицию guest-а в части атрибутов номенклатуры (уточнение модели) Я уже с утра почувствовал, что что-то не так. ;) Сначала вспышки на Солнце, теперь вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 11:28 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> p.s. "Цвет" потребительский, "Цвет" в стоматологии, "Цвет" автомобильный, "Цвет" нации - это разные виды атрибутов Цвет нации - это бессмысленное определение. Все остальное - характеристика восприятия глазом света, сформулированная в разных контекстах. "Цвет" нации с остальными "цветами" имеет точно точно такую же связь, как "масло моторное" и "масло подсолнечное". Т.е. никакой. Разные контексты и приводят к тому, что атрибуты становятся разными. "Цвет автомобильный" со значением 1U2 - это и не цвет вовсе, это код цвета по цветовой палитре вендора (в даном случае - Subaru). Таким образом, при описании автомобиля, нам может понадобиться 2 разных атрибута, описываемых для двух разных контекстов использования: "цвет потребительский" (обобщенно для покупана - "коричневый металлик") и "код цвета" (точный состав краски - для маляра). Что в каталогах EPC, например, и делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 12:09 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
> Т.е. никакой. Это заблуждение. "Масло" в данном случае идентифицирует часть свойств продукта, связанных с вязкостью. "Моторное" - область применения, а "подсолнечное" - технологический процесс. Никто не обещал, что подсолнечное масло нельзя использовать в качестве моторного. Возможно, есть технологический процесс, позволяющий получить продукт с нужными свойствами. Ваша ошибка в том, что вы принимаете ключевые слова за основу для классификации. А приниматься за основу должны однородные определения. Т. е. подсолнечное масло должно, во-первых, быть идентифицировано как пищевой продукт, во-вторых, иметь суррогатное название с общими для всех масел принципами идентификации. > Разные контексты и приводят к тому, что атрибуты становятся разными. И это заблуждение. Атрибуты остаются теми же самыми. Меняется только способ их идентификации и описания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 12:25 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
Я понимаю вашу логику, но не могу ее использовать просто потому, что не считаю фонетические основы русского языка корректными, чтобы классифицировать объекты. Любая жидкость обладает вязкостью, но не любая жидкость является маслом (вода, водка, смола, сироп и т. д.). "Масло" - это не часть свойств (точнее, слово может быть употреблено для идентификации объектов, обладающих повышеной вязкостью, но кваждый себе представит разное масло). Но, в общем случае, оно вообще само по себе без уточения контекста бессмысленное и неидентифицируемое. Это просто такое слово в языке. В русском, причем. Сравните с английским. Моторное, подсолнечое и сливочное. В русском языке это все "масло". В то время как сливочное, в английском - это не oil, a butter. И из-за того, что на разных языках объекты именуются по разному, способы их классификации не могут измениться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 14:25 |
|
||
|
Помогите сформировать отношения у табличек.
|
|||
|---|---|---|---|
|
#18+
astonИ из-за того, что на разных языках объекты именуются по разному, способы их классификации не могут измениться. Точнее было бы: "Из-за того, что в одном языке это одинаковые слова, те, кто думают на этом языке, не должны заблуждаться". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 14:34 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36273804&tid=1543015]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
223ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 528ms |

| 0 / 0 |
