powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Просветите по схеме
16 сообщений из 41, страница 2 из 2
Просветите по схеме
    #38641065
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выcпрошайка, ну так и добавь поле фактического остатка в таблицу движений. И вычисляй его при записи в неё прихода или расхода. Если приход товара в магазин, находишь последнюю запись об этом товаре в указанный магазин (не важно приход или расход) и плюсуешь к полученному запросом значению остатка значение прихода. Всю информацию записываешь в таблицу движений, при расходе разница только в том, что минусуешь.
И всё что тебе нужно будет в таблице. Даже можно будет простым запросом строить историю остатков на любую дату.
А из справочника изделий остатки лучше убрать.
...
Рейтинг: 0 / 0
Просветите по схеме
    #38641079
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Fontaine, то есть получается из трёх таблиц слепили одну. С избыточностью информации конечно, ухудшением целостности данных, но зато как ты хочешь
...
Рейтинг: 0 / 0
Просветите по схеме
    #38641083
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineВыcпрошайка, ну так и добавь поле фактического остатка в таблицу движений.
Не очень удачная схема - никаких выигрышей по сравнению с отдельной таблицей остатков она не несет, только проблемы
1. Что Вы будете делать с несколькими строго одновременными операциями?
2. Что будет, если операцию движения будет редактировать позже?
...
Рейтинг: 0 / 0
Просветите по схеме
    #38641107
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин, однозначно неудачная (я кстати про это написал), но всё же думаетеся мне, удачнее, чем выделение фактических остатков в таблицу изделий.
Проблемы (особенно первая) описанные Вами присутствуют и при записи остатков в таблицу изделий.
Во-вторых, почему последнюю запись надо брать по времени? А id на что?
Ну а про редактирование, это уж пусть извращаются авторы, раз шибко хочется видеть это поле.
Конечно, при хранении только текущего значения остатков можно просто определить величину изменения при редактировании и записать новое значение в поле остатков таблицы изделий, но ведь при моём варианте после определения величины изменения можно же update забабахивать на все последующие записи движения этого товара в этом магазине.

Просто хранение остатков без привязки к магазинам это вообще чушь какая-то.... Никакого анализа по этой цифре не сделаешь, соответственно она не особо и нужна
...
Рейтинг: 0 / 0
Просветите по схеме
    #38641445
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineПросто хранение остатков без привязки к магазинам это вообще чушь какая-то.... Никакого анализа по этой цифре не сделаешь, соответственно она не особо и нужна

Не путайте божий дар с яичницей.
Остаток без привязки к магазину - отличный показатель для планирования закупки новой оптовой партии (с последующей поставкой в магазины) :)
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644413
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что получается при такой схеме. Ну и где тут остатки по отдельному Магазину(Подразделению) должны лечь?
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644414
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное все равно придется делать таблицу Остатки. Вот скрин.
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644416
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВыcпрошайкаНаверное все равно придется делать таблицу Остатки. Вот скрин.

Схема с таблицей Остатки.
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644422
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, никак не пойму в каком месте кода нужно сделать проверку на нуль? А то ошибку выдает. Выделил цветом. Хотя свойство QuantityIncoming имеет цифирь, но пишет что объект не имеет значения. Подскажите плиз.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public partial class RemainderCartridge
    {
        partial void FactRemainderDepartment_Compute(ref int result)
        {
            // Присвоение результату значения нужного поля
            Department dep=this.Department;
            CartridgeLotNumber cln=this.CartridgeLotNumber;
            var query = from lotnumber in cln.RemainderCartridges
                        where lotnumber.Department == dep
                        select new
                        {                           
                            remfact=cln.CarteidgeMovements.Sum(m=>[SIZE=2][color=red](int)m.QuantityIncoming.Value[/color][/SIZE]) - cln.CarteidgeMovements.Sum(m=>(int)m.QuantityExpense)

                        };
            foreach(var rem in query)
            if(FactRemainderDepartment!=0)
            {   
                result = rem.remfact;              
            }
        }
    }
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644796
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВыcпрошайкаВот что получается при такой схеме. Ну и где тут остатки по отдельному Магазину(Подразделению) должны лечь?
До этого момента мне казалось, что мы проектируем БД. Оказывается разрабатываем интерфейс...
В данной форме согласен, остатки по магазину не нужны.
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644816
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineВыcпрошайкаВот что получается при такой схеме. Ну и где тут остатки по отдельному Магазину(Подразделению) должны лечь?
До этого момента мне казалось, что мы проектируем БД. Оказывается разрабатываем интерфейс...

А разве одно другому должно противоречить?
...
Рейтинг: 0 / 0
Просветите по схеме
    #38644971
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выcпрошайка, откуда такая мыль про противоречие двух совершенно не связанных процессов. База данных проектируется для хранения данных, приложение - для отображения их. Как удобно хранить для понимания структуры, так и хранишь данные, потом как удобно воспринимать информацию, так и отображаешь. Никаких противоречий в этом вопросе быть не может
...
Рейтинг: 0 / 0
Просветите по схеме
    #38645769
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineВыcпрошайка, откуда такая мыль про противоречие двух совершенно не связанных процессов. База данных проектируется для хранения данных, приложение - для отображения их. Как удобно хранить для понимания структуры, так и хранишь данные, потом как удобно воспринимать информацию, так и отображаешь. Никаких противоречий в этом вопросе быть не может
Да это понятно. Картинки привел для наглядности. Просто хотелось бы чтобы результат сразу видел пользователь, без предварительного клика на кнопку, которая бы выводила отчет. Поэтому и таблицу Остатки сделал. Выглядеть примерно будет так как на скрине. Какие проблемы будут в хранении не знаю. Может у кого есть другое мнение. тогда приведите пример правильной схемы БД, ну и картинку желательно увидеть как данные выглядят в юзер интерфейсе.
...
Рейтинг: 0 / 0
Просветите по схеме
    #38645878
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выcпрошайка, мнений по схеме БД в этом топике напривилили уже порядочно. Тебе самому выбирать какой лучше. Лично мне кажется, более правильным решение отказа от хранения остатков и справочники должны хранить только справочную информацию.
Так-то полной постановки задачи не было, потому я напишу по тому, что писал ты.
Во-первых, займёмся справочниками.
таблица Категории (id категории, наименование, id родителя)
таблица Изделия (id изделия, наименование, id категории)
таблица Магазины (id магазина, наименование)
ну и одна рабочая таблица Движение (id движения, id изделия, id магазина, дата, направление (расход или приход), количество)
При этом остатки можно вычислить простым запросом, который схематично выглядит так:
Код: sql
1.
select id изделия, id магазина, sum((case направление when расход then -1 else 1 end)*количество) as остатки from движение group by id изделия, id магазина


Если не надо считать остатки по магазинам, то и не указывай в запросе id магазина.
Или сделать этот запрос вьюхой при необходимости определения общих остатков выполнять запрос
Код: sql
1.
select id изделия, sum(остатки) from представление остатков group by id изделия


Вот и всё проктирвование БД по твоеим требованиям
Конечно, при необходимости, можно подобавлять ещё кучу полей и таблиц. Например, в справочники статус изделия, категории, магазина (типа активен, не активен и т.п.)
В таблицу движений добавить единицы измерения в какой единице пришло или ушло изделие. При этом конечно следует создать справочник единиц измерений: id единицы измерения, наименование, id базовой единицы измерения, коэффициент пресчёта в базовую единицу измерения (например, один раз пришло 12 бутылок водки, в следующий раз 5 ящиков водки, чтобы правильно сосчитать остатки требуется иметь возможность перевода бутылок в ящики и наоборот)
Да много что ещё можно добавить при необходимости

А уж как это выводить пользователю, это совершенно другая тема, к проектированию БД не имеющая никакого отношения. Но это тебе и самому понятно.
...
Рейтинг: 0 / 0
Просветите по схеме
    #38647077
9681
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВыcпрошайкаИмеем: Одна Категория Вино-водочного изделия имеет много Наименований изделий (1:М). Пример:Категория - Водка имеет много наименований (Водка пшеничная, Водка анисовая, Абсент); категория-Коньяк (Коньяк армянский, Коньяк французский).
Один Магазин имеет много Наименований водки, а одно Наименование водки может находиться во многих магазинах. То есть связь многие ко многим (М:М).
Значит связующие таблицы будут Приход и Расход и Остатки.
Или Приход и Расход в одну таблицу объединить, сделав столбец Операция?
классно

рецептус -> сходи на 1с


чую
ща меня запинают почем зрря

но
- сходи на 1с

не пожалеешь
...
Рейтинг: 0 / 0
Просветите по схеме
    #38647294
Фотография Выcпрошайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9681ВыcпрошайкаИмеем: Одна Категория Вино-водочного изделия имеет много Наименований изделий (1:М). Пример:Категория - Водка имеет много наименований (Водка пшеничная, Водка анисовая, Абсент); категория-Коньяк (Коньяк армянский, Коньяк французский).
Один Магазин имеет много Наименований водки, а одно Наименование водки может находиться во многих магазинах. То есть связь многие ко многим (М:М).
Значит связующие таблицы будут Приход и Расход и Остатки.
Или Приход и Расход в одну таблицу объединить, сделав столбец Операция?
классно

рецептус -> сходи на 1с


чую
ща меня запинают почем зрря

но
- сходи на 1с

не пожалеешь
А чего именно там смотреть то надо? Ну стоит на компе у меня 1с.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Просветите по схеме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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