Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.08.2001, 05:53
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
2Moderator: сорри за offtopic, но народ здесь опытный, интересно знать мнение... Вопрос: Есть ли классическое решение реализации справочников с типоразмерами. Думаю наверняка ктонть занимался разработкой программ для торговли обувью (например) где есть один товар с несколькими размерами, или краской, где одна краска может быть разных цветов. Складской остатки необходимо вести по типоразмерам, а всякого рода прайс-листы - для товара. вижу несколько путей: можно завести каждый типоразмер как отдельный товар (тогда при выписке накладных выбирается конкретный типоразмер, но проблема с ростом ассортимента и отчетами потоварно) Можно как вариант ввести типы (товар-типоразмер) и у типоразмера ссылку на родительский товар... Можно ввести доп. табл. типоразмеров, но тогда в документах необходимо указывать товар и типоразмер вместе... Есть ещё варианты, вот хотелось бы узнать как это уже решается... С уважением, Андрей Митин ICQ:38607432 http://am.rusimport.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 05:59
|
|||
|---|---|---|---|
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>Можно как вариант ввести типы (товар-типоразмер) и у типоразмера ссылку на родительский товар... Правильное решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 06:07
|
|||
|---|---|---|---|
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>вижу несколько путей: можно завести каждый типоразмер как отдельный товар (тогда при выписке накладных выбирается конкретный типоразмер, но проблема с ростом ассортимента и отчетами потоварно) Это будет ненормализованная таблица. >Можно ввести доп. табл. типоразмеров, но тогда в документах необходимо указывать товар и типоразмер вместе... А если нам нужно будет узнать сколько товара определенного типаразмера есть в магазине, как будем это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 06:26
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>>вижу несколько путей: можно завести каждый типоразмер как отдельный товар (тогда при выписке накладных выбирается конкретный типоразмер, но проблема с ростом ассортимента и отчетами потоварно) >Это будет ненормализованная таблица. Чем это она будет ненормализованная? Если каждый размер мы представляем отдельным товаром, н-р Товар ID=1 Name="Краска 'Суперэкстра' красная" Цвет=Красный Товар ID=2 Name="Краска 'Суперэкстра' зеленая" Цвет=Зеленый >>Можно ввести доп. табл. типоразмеров, но тогда в документах необходимо указывать товар и типоразмер вместе... >А если нам нужно будет узнать сколько товара определенного типаразмера есть в магазине, как будем это делать? Обыкновенно - группируешь по товару - остатки товара, группируешь по товару,типоразмеру - остатки по типоразмерам... (я не отстаиваю этот вариант как хороший, я просто пытаюсь для себя понять как корректно делать...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 06:51
|
|||
|---|---|---|---|
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>Чем это она будет ненормализованная? В вашем случае поле "Цвет" зависит от поля "Name" - это 2-я нормальня форма, смысл нормализации в избавлении от повторяющихся групп, а у Вас данные поля Name повторяются. Обычно при проектировании БД стараются нормализовать хотя бы до 3-й нормальной формы. >я не отстаиваю этот вариант как хороший, я просто пытаюсь для себя понять как корректно делать... Чтобы действительно корректно сделать нужно проанализировать всю задачу, сделать правильно какой то кусочек довольно сложно. У Вас есть сущьность "Товар" у которого есть атрибуты 1. Наименование 2. Размер 3. Количество в магазине Итак Ботинки мужские размер 43 количество 20 Ботинки мужские размер 44 количество 20 Ботинки мужские размер 45 количество 30 Туфли женские размер 36 количество 20 Туфли женские размер 37 количество 20 Туфли женские размер 38 количество 30 Фактически наименование товара можно представить как тип товара, который будет справочником наименований, а реальный товар будет представлен в другой таблице с атрибутами размера и количества в магазине со ссылкой на справочник. Это я весьма упрощенно рассмотрел только одну сущьность из Вашей задачи. Научить правильно проектировать БД в двух словах невозможно, если действительно хотите научиться правильно проектировать БД почитайте соответствующую литературу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 07:51
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
Мне не очень хочется ввязываться в спор, но всё же... >>Чем это она будет ненормализованная? >В вашем случае поле "Цвет" зависит от поля "Name" - это 2-я нормальня форма, смысл нормализации в избавлении от повторяющихся групп, а у Вас данные поля Name повторяются. Обычно при проектировании БД стараются нормализовать хотя бы до 3-й нормальной формы. Отношение (будем так называть таблицу) тогда удовлетворяет 2-ой нормальной форме когда каждый из его атрибутов, не входящий в состав PK полностью функционально зависит от всего PK а не от его части. В примере, который я привел нет составного ключа - есть PK ID, от которого функционально зависит атрибут Цвет, и есть AK (альтернативный (потенциальный) ключ) NAme - от которого тоже зависит атрибут Цвет. Так как оба детерминанта отношения являются его потенциальными (если точно - один суррогатный ключ, второй потенциальный ключ) ключами и в отношении нет транзитивных зависимостей, то теоретически данное отношение (с 3мя атрибутами ID,Name,Color) удовлетворяет даже НФБК. >Туфли женские размер 37 количество 20 >Туфли женские размер 38 количество 30 >Фактически наименование товара можно представить как тип товара, который будет справочником наименований, а реальный товар будет представлен в другой таблице с атрибутами размера и количества в магазине со ссылкой на справочник. Да, можно, только с учетом того, что товары могут быть и без типоразмеров (ну допустим кроме ботинок есть ещё ложечки для их одевания ), тогда в документах товародвижения должен присутствовать или код из Вашей второй табл. типоразмеров, либо код из основной табл. товаров. Усложняется поддержка ссылочной целостности (особенно если в СУБД нет триггеров). (кстати никогда бы не стал держать количество в магазине в справочнике товаров(типоразмеров), думаю Вы привели этот пример просто очень сильно его упростив...) >Это я весьма упрощенно рассмотрел только одну сущьность из Вашей задачи. Научить правильно проектировать БД в двух словах невозможно, если действительно хотите научиться правильно проектировать БД почитайте соответствующую литературу. Спасибо, обязательно почитаю, кстати, не порекомендуете ли что-нибудь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 08:39
|
|||
|---|---|---|---|
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>Отношение (будем так называть таблицу) OK >В примере, который я привел нет составного ключа - есть PK ID, от которого функционально зависит атрибут Цвет Зависит то зависит, вот только зависит транзитивно через Name. Что Вы же сами и подтверждаете " и есть AK (альтернативный (потенциальный) ключ) NAme - от которого тоже зависит атрибут Цвет. " Вот только неувязочка, как же Name может быть у Вас АК, если он не уникален? >Да, можно, только с учетом того, что товары могут быть и без типоразмеров (ну допустим кроме ботинок есть ещё ложечки для их одевания ), Но я и говорил, что рассмотрел задачу упрощенно, я же не знаю всей Вашей прикладной области. >Спасибо, обязательно почитаю, кстати, не порекомендуете ли что-нибудь? Стандартный ответ: Дейт "Введение в системы баз данных" (если не напутал в названии) Ну что нибудь по ER моделированию, к сожалению порекомендовать что либо конкретнее не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 09:01
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>Вот только неувязочка, как же Name может быть у Вас АК, если он не уникален? как неуникален? конечно уникален я же специально и писал название в кавычках чтобы показать что они разные... То есть я хотел сказать что каждую модификацию (типоразмер) сущности "Товар" я буду считать сущностью "Товар". Как то слишком академично получается... Если по простому - только что посмотрел Парус - у них это решено тем, что для любого товара есть модификации (т.е. две таблицы наверное, Товар-Модификации) и во всех товародвижениях участвует именно идентификатор модификации. Это достигается тем что для любого товара должна быть как минимум одна модификация, то есть для Товара "Ложечка" должна быть модификация "Ложечка"... И всё же очень хотелось бы послушать остальных глубокоуважаемых специалистов-практиков... >>Спасибо, обязательно почитаю, кстати, не порекомендуете ли что-нибудь? >Стандартный ответ: Дейт "Введение в системы баз данных" (если не напутал в названии) Спасибо, , я читал Томаса Конноли и ко... "Базы данных". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 09:16
|
|||
|---|---|---|---|
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
>как неуникален? конечно уникален Да, немного не досмотрел, сорри. Но все равно плохо, потому что по сути два атрибута запихиваются в один, в вашем примере это не нарушает нормализацию, но все равно, как то коряво смотрится >то есть для Товара "Ложечка" должна быть модификация "Ложечка"... Ну можно и так, мне трудно судить не вникнув, а вникать как то не очень хочется (В моем примере размер просто мог быть Null) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2001, 14:11
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
можно примерно так: 1 таблица ТОВАР id_tovar name_tovar 0 ботинки 1 туфли 3 ложки 2таблица СВОЙСТВО_ТОВАРА id_property name_property 0 размер 1 цвет 2 сезон 3 таблица id_value name_value id_property(FK) 0 40 0(размер) 1 41 0(размер) 2 желтый 1(цвет) 3 летние 2(сезон) 4 таблица id_tovar(fk) id_property(fk) 0(ботинки) 0(размер) 0(ботинки) 1(цвет) 0(ботинки) 2(сезон) 1(туфли) 1(цвет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2001, 08:07
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
У меня учет реализован как описал yzif. Единственное с чем пришлось вдоволь наиграться - с динамическими перекрестными запросами и отображением на клиенте. Поэтому сейчас в 4-ой таблице храню и формируемую триггерами полную 'читаемую' строку свойств и значений свойств. Но в 2k, в отличие от 7, для которой я и разрабатывал, можно функциями генерить строку прямо в запросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2001, 05:47
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
С интересом прочитал дискуссию по этому вопросу. По моему никто не обратил внимание, что это вопрос на реализацию отношения многие-ко-многим. Обычно это решается через промежуточную таблицу. Таблица 1. T (Товар) TName T_ID tA 1 tB 2 tC 3 // товар без признака Таблица 2. S (Признак товара) SName S_ID sA 1 sB 2 TS (Промежуточная таблица) T_ID S_ID 1 1 1 2 2 1 2 2 3 null (или 0 по умолчанию) Примеры. Выборка всех наименований по признаку select TName,SName from T join TS on T.T_ID =TS.T_ID join S on S.S_ID =TS.S_ID where SName = sA Результат tA sA tB sA Выборка всех наименований с признаком и без признака (проблема ложечки для обуви) select TName,SName from T left outter join TS on T.T_ID =TS.T_ID join S on S.S_ID =TS.S_ID Результат tA sA tA sB tB sA tB sB tC null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2001, 06:26
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
2 yzif & Павел: Что необходимо запоминать в документах, чтобы узнать остатки на складе желтых летних мужских ботинок 41го размера? 2 Константин: В общем то тот же вопрос, что предлагаешь запоминать в документах товародвижения - оба поля (первое Товар, второе Признак товара (и если признака нет то Null))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2001, 08:39
|
|||
|---|---|---|---|
|
|||
реализация справочника товаров с типоразмерами... (легкий off) |
|||
|
#18+
На самом деле таблицы свойств и значений свойств это только подсправочники, помогающие формировать главный для этого случая справочник - справочник групп свойств и значений, на который и нужно ссылаться из таблиц с операциями. Тайой справочник может иметь структуру что-то типа Groups Group_id, Property_id, Property_value_id По полю Group_id можно ссылаться на несколько комбинаций свойство-значение. Вот и заноси в этот справочник пары: модель-мужские, сезон-летние, цвет-желтые, размер-41. Естно Group_id для перечисленных комбинаций свойсв и значений должен быть один и тотже. Какой ключ использовать - суррогатный или естественный - решай сам. Дальше нужно оперировать кодом продукции совместно с кодом группы. Я, например, реализовал в таблицах принцип 'одна продукция - много групп признаков'. Т.е. в главной таблице указывается продукция, а в подчиненной код группы свойств (Group_id). Мне это нужно чтобы развести юзеров, кому свойства до лампочки с теми, кому они нужны (бухгалтера и менеджеры, например). Понятно что первым не важен цвет ботинок, т.к. это не влияет на цену, тогда как вторым этим нужно оперировать. Но все это уже вопрос вкуса и условий задачи. Ну а дальше все зависит от конкретной реализации задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1825668]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 347ms |

| 0 / 0 |
