powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посоветуйте стратегию построения базы.
23 сообщений из 23, страница 1 из 1
Посоветуйте стратегию построения базы.
    #33485821
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то, мне кажется, мой вопрос уберут из списка.
Я все стесняюсь, задавать вопроси, так как начинающий в работе с базами, и боюсь, как бы вопрос не получился, слишком простим и слишком глупим, но когда по форуму встречаются, вопроси которые и мне кажется легкими, то рискну:
В простом изложении задача такая:
Ест фирма, у фирмы магазины. С каждого собирается повседневные отчеты о продажах. В программе можно увидеть остатки в каждом магазине, остатки в целом, перечень всех товаров и т.д. Все тривиально.
Раньше, у меня это било сделано в Excel-e. На свою голову, начал все делать в гибриде с Access.
Чем больше узнаю о базах, тем больше возможностей обнаруживаю и уже четвертый раз меняю стратегию решения задачи, в чем и нужна консультация знающих людей.
Я имею Таб1 для кодов и наименовании товара, Таб2 для кодов магазинов, Таб3 для кодов поставщиков, кое какие таблицы еще и n количество таблиц соответствующих магазинов и поставщиков + таблица склада.
Каждодневные отчеты, при вводе, прямо воздействует на соответствующие таблицы. Мне интересно ваше мнение о такой постройке решения, также мнение о таком распределении данных по таблицам. Знаю, где-то ест теория про все это, но прочитанное в одном или нескольких местах это одно, а опит, другое.
Ну, очень прощу!
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485826
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vinЧто-то, мне кажется, мой вопрос уберут из списка.
И правильно кажется. На этом сайте есть форум "Проектирование БД". Я могу перенести этот топик туда, ибо здесь он не по теме.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485860
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь! Перенесите.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485872
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переношу.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485908
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vinЯ имею Таб1 для кодов и наименовании товара, Таб2 для кодов магазинов, Таб3 для кодов поставщиков, кое какие таблицы еще и n количество таблиц соответствующих магазинов и поставщиков + таблица склада.
Если у вас для каждого магазина была своя страничка в ёкселе, то в реляционых БД такой подход категорически не приветствуется.

Если воспримете, небольшой совет: используйте в пограмных объектах (таблицы, поля, формы) латиницу. Давайте четкие одно-двухсловные названия таблица, запросам и т.п. Удобно придерживаться определенной системы именования полей, запросов и таблиц. Иначе в дальнейшем будет трудно разбираться в собственно коде и перетряхивать его при необходимости.

Примеры реализации учета товаров, реализации, складов можно найти здесь же поиском. Из вашей помтановки не совсем ясно что именно вам требуется.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485934
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если у вас для каждого магазина была своя страничка в ёкселе, то в реляционых БД такой подход категорически не приветствуется.Как раз, вы правильно уловили. Я чувствую, что я не одолеваю Excel- овский подход решения этой задачи.

Если воспримете, небольшой совет:Не то чтобы восприму, проглочу.

В Excel-е таблицы хранились в отдельных файлах (Write Print Input sequential file сами чувствуете, какой ужас). Пока магазинов било мало думал так отделаюсь. Но уже дело дошло до 60 торговых точек и в среднем 800 записей в день!!!
Один и главный совет я уже поучил от вас
Если у вас для каждого магазина была своя страничка в ёкселе, то в реляционых БД такой подход категорически не приветствуется.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485937
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Таб2 для кодов магазинов, Таб3 для кодов поставщиков
...
n количество таблиц соответствующих магазинов и поставщиков
...

Это неправилно однозначно.
Должна быть одна таблица магазинов с полями:

Код магазина, название магазина, Реквизит1, Реквизит2 ....

И аналогично для поставщиков.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33485977
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу почувствовал гибкость такой таблицы, если, конечно, правильно понял, но ест вопрос:
Что заносить в записи этой таблицы, повседневную информацию о продажах или лучше прямо результат изменении в количествах?
Первое по идее, лучше имеется вся история в руках для любой обработки, но размер таблицы пугает, количество наименовании товара превышает 3000, всякие мелкие принадлежности. (Т.е. Если я правильно понял, поля тоже будут около 3000).
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33486101
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы посоветовал приблизительно такую структуру:
1. Таблица "Магазины" (Код, Название, ...)
2. Поставщики (Код, Название, ...)
3. Артикли (Код, Название, ...), ессли ведется партийный учет КодПартии
4. Документы (Код, Дата,КодМагазина, КодПоставщика, Тип Поставка/OтчетПродаж, ... )
5. Движения (Ко, КодДокумента, КодТовара, Колво, Сумма, СтавкаНДС и здесь ничего больше липить не надо) для Поставок Колво, Сумма полозительное, для OтчетПродаж отрицательное

Еще совет используй источник данных MSSQL, 60 торговых точек не шутка.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33486808
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To u4x96

Я писал что, несколько раз начинал заново все делать.
Как раз, этот вариант тоже собирался делать, но отверг.
В принципе, точно это сделано и в этот момент, только для страховки (в причину нехватки знания) и быстроты результатов запроса, добавлены таблицы магазинов и поставщиков, в которых сразу заношу изменения, при вводе новых данных о движении в таблицу 5. Что, чувствую, вообще не совместимо с принципами построения баз данных..
Кто ответили, все напрочь отвергают отдельные таблицы для магазинов и поставщиков. Понял но, прошу посоветовать:

При больших количествах записей в 5-ой таблице (при большом движении товара) вывод остатков для каждого магазина или для склада, на практике, при каких количествах записей становится медленным. (Имею в виду, медленным до такой степени, когда создает дискомфорт в ожидании результатов запроса)

Добавлю еще, что таблица Артикли (Код, Название, ...), содержит еще поля “Группа”, “Подгруппа”. Которые тоже участвуют в условиях выборки.

.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33486894
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное замедление - следствие гибридного подхода ? Вы продолжаете поддерживать связку с ёкселем ?

На такого рода объеме данных, как у вас, решение на Аксессе должно работать вполне удовлетвортельно, а на SQL'e - так вообще замечательно.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487016
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vin To u4x96

Я писал что, несколько раз начинал заново все делать.
Как раз, этот вариант тоже собирался делать, но отверг.
В принципе, точно это сделано и в этот момент, только для страховки (в причину нехватки знания) и быстроты результатов запроса, добавлены таблицы магазинов и поставщиков, в которых сразу заношу изменения,

Зачем, какие изменения, при вводе новых данных достаточно ввести их таблицы Документы и Движения.
Ping-vin
при вводе новых данных о движении в таблицу 5. Что, чувствую, вообще не совместимо с принципами построения баз данных..

В идеале да, на практики преходится
Ping-vin
Кто ответили, все напрочь отвергают отдельные таблицы для магазинов и поставщиков. Понял но, прошу посоветовать:

Можно все слепить в одну таблицу Контрагенты, или еще лудше
1. Контрагент (Код, Хазвание, ....)
2. Магазин(КодКонтрагента, ...)
3. Поставщик(КодКонтрагента, ...)
Заметь КодКонтрагента является первичным ключем и одновреммено внешним.
Ping-vin
При больших количествах записей в 5-ой таблице (при большом движении товара) вывод остатков для каждого магазина или для склада, на практике, при каких количествах записей становится медленным. (Имею в виду, медленным до такой степени, когда создает дискомфорт в ожидании результатов запроса)

Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять
Ping-vin
Добавлю еще, что таблица Артикли (Код, Название, ...), содержит еще поля “Группа”, “Подгруппа”. Которые тоже участвуют в условиях выборки.

И много чего еще
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487095
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Программист-Любитель

Из Excel оставил только интерфейс, ввод данных и управляющие элементы. В основном все делаю запросами. Все базы в mdb.
Ваш ответ воодушевляет.


To u4x96
Зачем, какие изменения, при вводе новых данных достаточно ввести их таблицы Документы и Движения.Безусловно, достаточно. Исходя из следующего:
Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять.Я правильно понял?
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487155
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping-vin
Из Excel оставил только интерфейс, ввод данных и управляющие элементы. В основном все делаю запросами. Все базы в mdb.
Ваш ответ воодушевляет.
Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять.
Я правильно понял?
В аксессе триггеров нету. Есть во взрослом SQL-е.
Хорошо бы, конечно, было параллелельно с переносом данных в БД и формы ввода строить. Вот их как раз достаточно быстро делать в Access'e. Т.е. я бы рекомендовал связку MS SQL как хранилище + Access ADP как интерфейс пользователя.

Файл-серверный вариант Access'а (MDB с таблицами + MDB со всем остальным) имеет богатый набор подводных камней и не отличается хорошей скоростью работы. В этом смысле связка MS SQL (таблицы, запросы, процедуры, т.е. вся бизнес-логика) + Access ADP (формы и отчеты) намного лучше.

Но! Если у вас стоит задача поддержания а работающем состоянии всех бизнес-процедур во время переходного периода, то ... можно только искренне сочуствовать - задача очень трудная ...
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487320
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель Но! Если у вас стоит задача поддержания а работающем состоянии всех бизнес-процедур во время переходного периода, то ... можно только искренне сочуствовать - задача очень трудная ...Все что в данный момент работает, трещит от нагрузки. Задача стоит чуть “полегче”: Приготовить, запихнуть все данные на тот момент в виде остатков в каждом объекте. Все что до этого момента, отложить. Создать Новую программу, скинуть “отложенное” туда, привести в форму нужного БД, состыковать с рабочим. Вот, это все. Если, внятно передал.

Вопрос: Если еще в силе: Программист-Любитель На такого рода объеме данных, как у вас, решение на Аксессе должно работать вполне удовлетвортельно, а на SQL'e - так вообще замечательно. то посоветуете или нет, вообще исключить следующую таблицу, u4x96 Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять которая в принципе только для быстрого отчета по объектам. Или нет?
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487423
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно запрос Остаток может быть перерасчитан на основе таблицы Движение. Но смотреть на песочные часики может надоесть, поэтому КАК ПРАВИЛО поддерживается таблица Остаток. При этом нужно аккуратно следить за изменением данных в таблице Движение чтобы не допустить устаревшего состояния таблицы Остаток.

В SQL сервере это может быть гарантировано за счет тригеров.

Со стороны трудно подсказать, как вам будет правильнее/удобнее - всякий раз ждать перерасчета либо хранить насчитанные значения.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487908
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И чтоб не надоедать, последний вопрос:
Раз, база mdb а не SQL сервер, что вы можете посоветовать, если при начале работы будет формироваться временная база с таблицами или таблицей остатков (только во время сеанса), в таком режиме самый надежный “тригер” это то, что ввод данных происходит с Excel и все программное управление под рукой (конечно не совсем изящно, или совсем не изящно, но может, это ест вариант?)
А ждать придется только в начале, как будто приложение загружается.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487939
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ввод данных не может быть произведен помимо вашего контроля, то вы в нужный момент будете вызывать пересчет. Причем, его можно напустить только на тот более узкий диапазон данных, который был затронут -> он выполнится быстро.

Ну а при старте приложения немного подождать, чтобы в первый раз сформировать таблицу - наверное ничего страшного.

Не будет проблемы, если базу одновремено с двух рабочих мест откроют с небольшой разницей по времени ? Один запустил DELETE FROM ... INSERT INTO ... SELECT ..., потом второй то же самое ?
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33487958
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, все, с чего-то нужно начинать.

Спасибо за терпение и добродетельность!

.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33488171
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы мою идею с Остатком довели до обсурда.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33488273
Ping-vin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можете объяснить, почему?
Вы поймите, я здесь ничего не могу утверждать, я слушаю других. Вы дали идею и ушли. А для его реализации нужны вещи (MSSQL, c тригерами). А база mdb, я ваяю на VB, все било сделано в Excel-e, базы заносились прямой записью в файлы на диске. Все это вам не о чем не говорит? В частности: Я уверен, что для вас и для всех, кто хорошо знают ДБ это смешная задача, это, наверное 2+2 для этой сферы, а я не знаю в нем почти ничего. Специально начал работать в Access, которую ненавидел (здесь поставил бы “смаилчик”, но невозможно) а сейчас очень люблю (здесь тоже), специально изучил, на каком-то уровне, азы SQL языка, читаю стати Тенцера чтобы хоть в чем-то разобраться. Какой MSSQL? Да вы что? Пока я дорасту до этого, меня вышвырнут отсюда. Для таких объемов, какие ожидаются, я это сделаю на родном VB, и в двое быстрее, но знаю, что для этого существует специально для него созданная теория и специально, для его разработки созданные вещи.

Человек понял, что максимальное, чего можно при моем багаже добиться, это то к чему ми пришли выше. Старался вести в нужную сторону, но, увидев что, не получится, посоветовал, чтоб как можно меньше дров наломал. А вы смеетесь.

Вопрос: Что делает это таблица, про которую вы говорите? Убыстряет выборку, да? Или я опять не понял вас?

1. Таблица "Магазины" (Код, Название, ...)
2. Поставщики (Код, Название, ...)
3. Артикли (Код, Название, ...), ессли ведется партийный учет КодПартии
4. Документы (Код, Дата,КодМагазина, КодПоставщика, Тип Поставка/OтчетПродаж, ... )
5. Движения (Ко, КодДокумента, КодТовара, Колво, Сумма, СтавкаНДС и здесь ничего больше липить не надо) для Поставок Колво, Сумма полозительное, для OтчетПродаж отрицательное

Эта част вашего совета, как я писал выше, у меня так и сделана, чему искренно радуюсь, потому что она, в принципе совпало с мнением специалиста.
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33488324
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да "Остаток" нужен для ускорения работы ценой нарушения нормализации данных(читали уже наверное если нет обезательно прочтите). А нарушении нормализации всегда зло, с помощью механизма тригеров это зло можно свети к минимому, при других вариантах проблем не оберетесь.

Во первых работать с проэктом Access также просто как с mdb
Во вторых есть бесплатбая версия MS SQL, которую имеет смысл использовать(поэтому я и слова о индексированных предстовлениях не сказал)
Так что не вижу оснований не использовать MS SQL и тригеры.

Ваши способ с обновлением остатков слишком накладен и вносит слишком много "НО" и "ЕСЛИ".
(с) Путь наименьшего сопративления всегда прильный, милиарды электронов не могу ошыбаться

Так что или MS SQL и тригеры или mdb и ничего(в принцыпе Access умеет кешировать результаты запросов)
...
Рейтинг: 0 / 0
Посоветуйте стратегию построения базы.
    #33488573
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дабы не жалко было потом потраченного времени на репликацию лучше сразу отказать от identity полей и пользоваться гуидами.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посоветуйте стратегию построения базы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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