Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Просветите по схеме / 25 сообщений из 41, страница 1 из 2
12.05.2014, 22:20
    #38639239
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Имеем: Одна Категория Вино-водочного изделия имеет много Наименований изделий (1:М). Пример:Категория - Водка имеет много наименований (Водка пшеничная, Водка анисовая, Абсент); категория-Коньяк (Коньяк армянский, Коньяк французский).
Один Магазин имеет много Наименований водки, а одно Наименование водки может находиться во многих магазинах. То есть связь многие ко многим (М:М).
Значит связующие таблицы будут Приход и Расход и Остатки.
Или Приход и Расход в одну таблицу объединить, сделав столбец Операция?
...
Рейтинг: 0 / 0
12.05.2014, 22:46
    #38639254
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Во-первых, делай срезу дерево категорий чтобы потом не было мучительно больно.
Во-вторых, таки да, приход-расход это одна таблица движений товара.
В-третьих, не делай таблицу остатков пока совсем уж не прижмёт, с ней хлопот не оберёшься.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.05.2014, 23:08
    #38639262
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Dimitry SibiryakovВо-первых, делай срезу дерево категорий чтобы потом не было мучительно больно.
Во-вторых, таки да, приход-расход это одна таблица движений товара.
В-третьих, не делай таблицу остатков пока совсем уж не прижмёт, с ней хлопот не оберёшься.

А в какую таблицу тогда поле остатков делать?
...
Рейтинг: 0 / 0
12.05.2014, 23:15
    #38639266
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
ВыcпрошайкаА в какую таблицу тогда поле остатков делать?
Ни в какую. Считай их на лету как сумму оборотов пока железо будет справляться. К этому
моменту ты поднаберёшься достаточно опыта чтобы провести денормализацию правильно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.05.2014, 23:39
    #38639279
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Dimitry SibiryakovВыcпрошайкаА в какую таблицу тогда поле остатков делать?
Ни в какую. Считай их на лету как сумму оборотов пока железо будет справляться.

Что-то не пойму. Так вывод числа остатка надо где-то показать. Где?
...
Рейтинг: 0 / 0
12.05.2014, 23:48
    #38639280
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
ВыcпрошайкаТак вывод числа остатка надо где-то показать. Где?
Где надо, там о показывай. Какое отношение показ информации имеет к её хранению?
Правильный ответ - никакого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.05.2014, 00:21
    #38639306
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Dimitry SibiryakovВо-первых, делай срезу дерево категорий чтобы потом не было мучительно больно.

Имеется ввиду например: 1CategoryIDCategoryIDP
Так?
...
Рейтинг: 0 / 0
13.05.2014, 01:51
    #38639332
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Есть несколько способов хранения дерева в БД, выбор конкретного зависит от условий
выборки, размеров и других требований.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.05.2014, 02:01
    #38639335
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Выcпрошайка,

Если для курсовой и только проект , то оставляй как есть... покатит... реализуемо...
По поводу вопросов:
ВыcпрошайкаИли Приход и Расход в одну таблицу объединить, сделав столбец Операция?
- довольно спорно... с одной стороны удобно - два разреза в одном месте и можно одним запросом посчитать вычисляемый остаток за период, но если работать в режиме онлайн то при розничной продаже (в расходе) будет болтаться под ногами весь приход, и наоборот - в приходе будет болтаться под ногами вся продажа - отсюда возможны тормоза... есть семечки удобнее из посуды в которой только семечки, а не из той, в которой семечки с сухим горохом в перемешку...
ВыcпрошайкаА в какую таблицу тогда поле остатков делать?
Если таблицы остатков нет - то можно посчитать остатки запросами на лету и вывести в форму или отчет: весь приход в магазин за период минус весь расход за период...
...
Рейтинг: 0 / 0
13.05.2014, 02:27
    #38639337
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Dimitry SibiryakovВыcпрошайкаА в какую таблицу тогда поле остатков делать?
Ни в какую. Считай их на лету как сумму оборотов пока железо будет справляться. К этому
моменту ты поднаберёшься достаточно опыта чтобы провести денормализацию правильно.

То бишь достаточно, чтобы сделать таблицу остатков :).
Чего сразу-то не сделать?
Учитывая что первые шаги выглядят очень вменяемо...
Только в остаток лучше добавить поле "Дата остатка" и признак "Актуальный"... :)
...
Рейтинг: 0 / 0
13.05.2014, 12:12
    #38639595
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
АнатоЛойТо бишь достаточно, чтобы сделать таблицу остатков :).
Чего сразу-то не сделать?
Потому что сейчас он не сможет сделать её правильно. Т.е. стабильной при
многопользовательской нагрузке и не вызывающей взаимоблокировок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.05.2014, 23:03
    #38640359
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Dimitry SibiryakovАнатоЛойТо бишь достаточно, чтобы сделать таблицу остатков :).
Чего сразу-то не сделать?
Потому что сейчас он не сможет сделать её правильно. Т.е. стабильной при
многопользовательской нагрузке и не вызывающей взаимоблокировок.

Откуда мнение про "многопользовательскую нагрузку" и "взаимоблокировки"?
ТС даже про СУБД ничего не говорил...
...
Рейтинг: 0 / 0
13.05.2014, 23:46
    #38640397
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Вот кажется так должно выглядеть, с учетом ваших замечаний. Проверю вот только в субботу.
...
Рейтинг: 0 / 0
13.05.2014, 23:47
    #38640399
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
АнатоЛойDimitry Sibiryakovпропущено...

Потому что сейчас он не сможет сделать её правильно. Т.е. стабильной при
многопользовательской нагрузке и не вызывающей взаимоблокировок.

Откуда мнение про "многопользовательскую нагрузку" и "взаимоблокировки"?
ТС даже про СУБД ничего не говорил...
MS SQL Express 2012
...
Рейтинг: 0 / 0
13.05.2014, 23:49
    #38640400
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
АнатоЛойОткуда мнение про "многопользовательскую нагрузку" и "взаимоблокировки"?

Один пользователь не набьёт такую кучу данных чтобы понадобилась денормализация в виде
хранимых агрегатов. Обычное, простейшее ведение хранимых агрегатов триггерами означает
сериализацию доступа к таблице этих агрегатов. У большинства СУБД это вызывает конвульсии
в виде блокировок (в том числе и при откате транзакций).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.05.2014, 23:54
    #38640405
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Поправил
...
Рейтинг: 0 / 0
14.05.2014, 01:28
    #38640444
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
ВыcпрошайкаПоправил

Может поправил, а может испортил...

Перспективные возможные плюхи и недочеты к тому, что ты поправил:

1. Ну раз у тебя в Изделии есть Остаток (это хорошо - имеешь цифру без пересчета), то почему нет там Пришло и Продано по такому же принципу (чтоб тоже пересчет не делать) + будет быстрый контроль: Пришло - Ушло = Остаток...
2. Представь теперь, что тебе твою движуху нужно привязать к документам: Приход к накладной (Дата, №, Поставщик), а Расход к Чеку (Дата, №, Время, Дисконтная карта, продавец, и т.д.).... У накладных номера идут от Поставщиков (АД-2014-75634), а у Чеков это от № 1 в начале смены и до .... и так каждый день от №1 и до... конца смены...
3. Расход бывает: Продажа, Брак, Списание, Возврат Поставщику, Кража, Подарки, ....

Причем это так... мелкие брызги... на твой рукописный шедевр...
...
Рейтинг: 0 / 0
14.05.2014, 09:09
    #38640531
dma_caviar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Dimitry SibiryakovВ-третьих, не делай таблицу остатков пока совсем уж не прижмёт, с ней хлопот не оберёшься.

Эт почему?
...
Рейтинг: 0 / 0
14.05.2014, 09:34
    #38640552
Mr.Fontaine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Выcпрошайка, я вот не очень понял изменения задачи... Изначально считали остатки по магазинам, сейчас же есть только общий остаток без возможности просмотра по каждому магазину в отдельности...
...
Рейтинг: 0 / 0
14.05.2014, 09:50
    #38640568
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
vmagВыcпрошайкаПоправил

Может поправил, а может испортил...

Перспективные возможные плюхи и недочеты к тому, что ты поправил:

1. Ну раз у тебя в Изделии есть Остаток (это хорошо - имеешь цифру без пересчета), то почему нет там Пришло и Продано по такому же принципу (чтоб тоже пересчет не делать) + будет быстрый контроль: Пришло - Ушло = Остаток...
2. Представь теперь, что тебе твою движуху нужно привязать к документам: Приход к накладной (Дата, №, Поставщик), а Расход к Чеку (Дата, №, Время, Дисконтная карта, продавец, и т.д.).... У накладных номера идут от Поставщиков (АД-2014-75634), а у Чеков это от № 1 в начале смены и до .... и так каждый день от №1 и до... конца смены...
3. Расход бывает: Продажа, Брак, Списание, Возврат Поставщику, Кража, Подарки, ....

Причем это так... мелкие брызги... на твой рукописный шедевр...
1)Как нет? В таблице Изделия есть вычисляемое свойство ФактическийОстаток, который вычисляется как КоличествоПрихода - КоличествоРасхода из таблицы ДвижениеИзделия
2,3) Я знаю что такое расход, но мне пока кроме абстрактного убытия изделия ничего не надо. Документов тоже.
...
Рейтинг: 0 / 0
14.05.2014, 09:53
    #38640570
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
еще:
Приход и расход он разный бывает
Отправка не проданной продукции в другой магазин (или возврат поставщику) это что?
Возврат продукции покупателем это что?
...
Рейтинг: 0 / 0
14.05.2014, 09:54
    #38640573
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Mr.FontaineВыcпрошайка, я вот не очень понял изменения задачи... Изначально считали остатки по магазинам, сейчас же есть только общий остаток без возможности просмотра по каждому магазину в отдельности...
Это вычисляемое свойство. Оно будет считаться методом, типа:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
partial void TotalCostMaterial_Compute(ref decimal result)
        {
            // вычисляем итоговую стоимость материала на  1 изделие
            if (ExpenseUnit >= 0)
                if(CostUnit>=0)
            {
                result = (decimal)ExpenseUnit * (decimal)CostUnit;
            }
        }
...
Рейтинг: 0 / 0
14.05.2014, 12:21
    #38640782
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
dma_caviarЭт почему?
А как работает MS SQL в следующей ситуации?

1) Транзакция 1 изменила остаток на +100500
2) Транзакция 2 изменила остаток на -100500
3) Транзакция 2 закоммитилась
4) Транзакция 1 откатилась
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.05.2014, 12:43
    #38640822
Mr.Fontaine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Выcпрошайка, однако я так и не уловил момента почему отказались хранить остатки товара по каждому магазину (и теперь их надо будет рассчитывать), а общие остатки хранить будем. Их также можно рассчитывать в случае необходимости, запрос будет отличаться только тем, что в group by будет отсутствовать id магазина
...
Рейтинг: 0 / 0
14.05.2014, 13:13
    #38640884
Выcпрошайка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просветите по схеме
Mr.FontaineВыcпрошайка, однако я так и не уловил момента почему отказались хранить остатки товара по каждому магазину (и теперь их надо будет рассчитывать), а общие остатки хранить будем. Их также можно рассчитывать в случае необходимости, запрос будет отличаться только тем, что в group by будет отсутствовать id магазина
Не отказался. Сам пока не знаю что получится, потому что не могу сейчас попробовать эту новую схему.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Просветите по схеме / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]