|
|
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Что-то, мне кажется, мой вопрос уберут из списка. Я все стесняюсь, задавать вопроси, так как начинающий в работе с базами, и боюсь, как бы вопрос не получился, слишком простим и слишком глупим, но когда по форуму встречаются, вопроси которые и мне кажется легкими, то рискну: В простом изложении задача такая: Ест фирма, у фирмы магазины. С каждого собирается повседневные отчеты о продажах. В программе можно увидеть остатки в каждом магазине, остатки в целом, перечень всех товаров и т.д. Все тривиально. Раньше, у меня это било сделано в Excel-e. На свою голову, начал все делать в гибриде с Access. Чем больше узнаю о базах, тем больше возможностей обнаруживаю и уже четвертый раз меняю стратегию решения задачи, в чем и нужна консультация знающих людей. Я имею Таб1 для кодов и наименовании товара, Таб2 для кодов магазинов, Таб3 для кодов поставщиков, кое какие таблицы еще и n количество таблиц соответствующих магазинов и поставщиков + таблица склада. Каждодневные отчеты, при вводе, прямо воздействует на соответствующие таблицы. Мне интересно ваше мнение о такой постройке решения, также мнение о таком распределении данных по таблицам. Знаю, где-то ест теория про все это, но прочитанное в одном или нескольких местах это одно, а опит, другое. Ну, очень прощу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 18:57 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Ping-vinЧто-то, мне кажется, мой вопрос уберут из списка. И правильно кажется. На этом сайте есть форум "Проектирование БД". Я могу перенести этот топик туда, ибо здесь он не по теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 18:59 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Извиняюсь! Перенесите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 19:18 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Переношу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 19:26 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Ping-vinЯ имею Таб1 для кодов и наименовании товара, Таб2 для кодов магазинов, Таб3 для кодов поставщиков, кое какие таблицы еще и n количество таблиц соответствующих магазинов и поставщиков + таблица склада. Если у вас для каждого магазина была своя страничка в ёкселе, то в реляционых БД такой подход категорически не приветствуется. Если воспримете, небольшой совет: используйте в пограмных объектах (таблицы, поля, формы) латиницу. Давайте четкие одно-двухсловные названия таблица, запросам и т.п. Удобно придерживаться определенной системы именования полей, запросов и таблиц. Иначе в дальнейшем будет трудно разбираться в собственно коде и перетряхивать его при необходимости. Примеры реализации учета товаров, реализации, складов можно найти здесь же поиском. Из вашей помтановки не совсем ясно что именно вам требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 19:48 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Если у вас для каждого магазина была своя страничка в ёкселе, то в реляционых БД такой подход категорически не приветствуется.Как раз, вы правильно уловили. Я чувствую, что я не одолеваю Excel- овский подход решения этой задачи. Если воспримете, небольшой совет:Не то чтобы восприму, проглочу. В Excel-е таблицы хранились в отдельных файлах (Write Print Input sequential file сами чувствуете, какой ужас). Пока магазинов било мало думал так отделаюсь. Но уже дело дошло до 60 торговых точек и в среднем 800 записей в день!!! Один и главный совет я уже поучил от вас Если у вас для каждого магазина была своя страничка в ёкселе, то в реляционых БД такой подход категорически не приветствуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 20:16 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
... Таб2 для кодов магазинов, Таб3 для кодов поставщиков ... n количество таблиц соответствующих магазинов и поставщиков ... Это неправилно однозначно. Должна быть одна таблица магазинов с полями: Код магазина, название магазина, Реквизит1, Реквизит2 .... И аналогично для поставщиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 20:17 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Сразу почувствовал гибкость такой таблицы, если, конечно, правильно понял, но ест вопрос: Что заносить в записи этой таблицы, повседневную информацию о продажах или лучше прямо результат изменении в количествах? Первое по идее, лучше имеется вся история в руках для любой обработки, но размер таблицы пугает, количество наименовании товара превышает 3000, всякие мелкие принадлежности. (Т.е. Если я правильно понял, поля тоже будут около 3000). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 21:01 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Я бы посоветовал приблизительно такую структуру: 1. Таблица "Магазины" (Код, Название, ...) 2. Поставщики (Код, Название, ...) 3. Артикли (Код, Название, ...), ессли ведется партийный учет КодПартии 4. Документы (Код, Дата,КодМагазина, КодПоставщика, Тип Поставка/OтчетПродаж, ... ) 5. Движения (Ко, КодДокумента, КодТовара, Колво, Сумма, СтавкаНДС и здесь ничего больше липить не надо) для Поставок Колво, Сумма полозительное, для OтчетПродаж отрицательное Еще совет используй источник данных MSSQL, 60 торговых точек не шутка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 01:08 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
To u4x96 Я писал что, несколько раз начинал заново все делать. Как раз, этот вариант тоже собирался делать, но отверг. В принципе, точно это сделано и в этот момент, только для страховки (в причину нехватки знания) и быстроты результатов запроса, добавлены таблицы магазинов и поставщиков, в которых сразу заношу изменения, при вводе новых данных о движении в таблицу 5. Что, чувствую, вообще не совместимо с принципами построения баз данных.. Кто ответили, все напрочь отвергают отдельные таблицы для магазинов и поставщиков. Понял но, прошу посоветовать: При больших количествах записей в 5-ой таблице (при большом движении товара) вывод остатков для каждого магазина или для склада, на практике, при каких количествах записей становится медленным. (Имею в виду, медленным до такой степени, когда создает дискомфорт в ожидании результатов запроса) Добавлю еще, что таблица Артикли (Код, Название, ...), содержит еще поля “Группа”, “Подгруппа”. Которые тоже участвуют в условиях выборки. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 11:59 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Наверное замедление - следствие гибридного подхода ? Вы продолжаете поддерживать связку с ёкселем ? На такого рода объеме данных, как у вас, решение на Аксессе должно работать вполне удовлетвортельно, а на SQL'e - так вообще замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 12:34 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Ping-vin To u4x96 Я писал что, несколько раз начинал заново все делать. Как раз, этот вариант тоже собирался делать, но отверг. В принципе, точно это сделано и в этот момент, только для страховки (в причину нехватки знания) и быстроты результатов запроса, добавлены таблицы магазинов и поставщиков, в которых сразу заношу изменения, Зачем, какие изменения, при вводе новых данных достаточно ввести их таблицы Документы и Движения. Ping-vin при вводе новых данных о движении в таблицу 5. Что, чувствую, вообще не совместимо с принципами построения баз данных.. В идеале да, на практики преходится Ping-vin Кто ответили, все напрочь отвергают отдельные таблицы для магазинов и поставщиков. Понял но, прошу посоветовать: Можно все слепить в одну таблицу Контрагенты, или еще лудше 1. Контрагент (Код, Хазвание, ....) 2. Магазин(КодКонтрагента, ...) 3. Поставщик(КодКонтрагента, ...) Заметь КодКонтрагента является первичным ключем и одновреммено внешним. Ping-vin При больших количествах записей в 5-ой таблице (при большом движении товара) вывод остатков для каждого магазина или для склада, на практике, при каких количествах записей становится медленным. (Имею в виду, медленным до такой степени, когда создает дискомфорт в ожидании результатов запроса) Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять Ping-vin Добавлю еще, что таблица Артикли (Код, Название, ...), содержит еще поля “Группа”, “Подгруппа”. Которые тоже участвуют в условиях выборки. И много чего еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 13:22 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
To Программист-Любитель Из Excel оставил только интерфейс, ввод данных и управляющие элементы. В основном все делаю запросами. Все базы в mdb. Ваш ответ воодушевляет. To u4x96 Зачем, какие изменения, при вводе новых данных достаточно ввести их таблицы Документы и Движения.Безусловно, достаточно. Исходя из следующего: Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять.Я правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 13:40 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Ping-vin Из Excel оставил только интерфейс, ввод данных и управляющие элементы. В основном все делаю запросами. Все базы в mdb. Ваш ответ воодушевляет. Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять. Я правильно понял? В аксессе триггеров нету. Есть во взрослом SQL-е. Хорошо бы, конечно, было параллелельно с переносом данных в БД и формы ввода строить. Вот их как раз достаточно быстро делать в Access'e. Т.е. я бы рекомендовал связку MS SQL как хранилище + Access ADP как интерфейс пользователя. Файл-серверный вариант Access'а (MDB с таблицами + MDB со всем остальным) имеет богатый набор подводных камней и не отличается хорошей скоростью работы. В этом смысле связка MS SQL (таблицы, запросы, процедуры, т.е. вся бизнес-логика) + Access ADP (формы и отчеты) намного лучше. Но! Если у вас стоит задача поддержания а работающем состоянии всех бизнес-процедур во время переходного периода, то ... можно только искренне сочуствовать - задача очень трудная ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 13:59 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель Но! Если у вас стоит задача поддержания а работающем состоянии всех бизнес-процедур во время переходного периода, то ... можно только искренне сочуствовать - задача очень трудная ...Все что в данный момент работает, трещит от нагрузки. Задача стоит чуть “полегче”: Приготовить, запихнуть все данные на тот момент в виде остатков в каждом объекте. Все что до этого момента, отложить. Создать Новую программу, скинуть “отложенное” туда, привести в форму нужного БД, состыковать с рабочим. Вот, это все. Если, внятно передал. Вопрос: Если еще в силе: Программист-Любитель На такого рода объеме данных, как у вас, решение на Аксессе должно работать вполне удовлетвортельно, а на SQL'e - так вообще замечательно. то посоветуете или нет, вообще исключить следующую таблицу, u4x96 Лечится еще одной таблицей "Остаток" и тригерами на "Движение" которые будут ее обхавлять которая в принципе только для быстрого отчета по объектам. Или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 14:43 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Обычно запрос Остаток может быть перерасчитан на основе таблицы Движение. Но смотреть на песочные часики может надоесть, поэтому КАК ПРАВИЛО поддерживается таблица Остаток. При этом нужно аккуратно следить за изменением данных в таблице Движение чтобы не допустить устаревшего состояния таблицы Остаток. В SQL сервере это может быть гарантировано за счет тригеров. Со стороны трудно подсказать, как вам будет правильнее/удобнее - всякий раз ждать перерасчета либо хранить насчитанные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 15:14 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
И чтоб не надоедать, последний вопрос: Раз, база mdb а не SQL сервер, что вы можете посоветовать, если при начале работы будет формироваться временная база с таблицами или таблицей остатков (только во время сеанса), в таком режиме самый надежный “тригер” это то, что ввод данных происходит с Excel и все программное управление под рукой (конечно не совсем изящно, или совсем не изящно, но может, это ест вариант?) А ждать придется только в начале, как будто приложение загружается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 17:23 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Если ввод данных не может быть произведен помимо вашего контроля, то вы в нужный момент будете вызывать пересчет. Причем, его можно напустить только на тот более узкий диапазон данных, который был затронут -> он выполнится быстро. Ну а при старте приложения немного подождать, чтобы в первый раз сформировать таблицу - наверное ничего страшного. Не будет проблемы, если базу одновремено с двух рабочих мест откроют с небольшой разницей по времени ? Один запустил DELETE FROM ... INSERT INTO ... SELECT ..., потом второй то же самое ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 17:30 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Ну, все, с чего-то нужно начинать. Спасибо за терпение и добродетельность! . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 17:35 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Вы мою идею с Остатком довели до обсурда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 19:18 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Можете объяснить, почему? Вы поймите, я здесь ничего не могу утверждать, я слушаю других. Вы дали идею и ушли. А для его реализации нужны вещи (MSSQL, c тригерами). А база mdb, я ваяю на VB, все било сделано в Excel-e, базы заносились прямой записью в файлы на диске. Все это вам не о чем не говорит? В частности: Я уверен, что для вас и для всех, кто хорошо знают ДБ это смешная задача, это, наверное 2+2 для этой сферы, а я не знаю в нем почти ничего. Специально начал работать в Access, которую ненавидел (здесь поставил бы “смаилчик”, но невозможно) а сейчас очень люблю (здесь тоже), специально изучил, на каком-то уровне, азы SQL языка, читаю стати Тенцера чтобы хоть в чем-то разобраться. Какой MSSQL? Да вы что? Пока я дорасту до этого, меня вышвырнут отсюда. Для таких объемов, какие ожидаются, я это сделаю на родном VB, и в двое быстрее, но знаю, что для этого существует специально для него созданная теория и специально, для его разработки созданные вещи. Человек понял, что максимальное, чего можно при моем багаже добиться, это то к чему ми пришли выше. Старался вести в нужную сторону, но, увидев что, не получится, посоветовал, чтоб как можно меньше дров наломал. А вы смеетесь. Вопрос: Что делает это таблица, про которую вы говорите? Убыстряет выборку, да? Или я опять не понял вас? 1. Таблица "Магазины" (Код, Название, ...) 2. Поставщики (Код, Название, ...) 3. Артикли (Код, Название, ...), ессли ведется партийный учет КодПартии 4. Документы (Код, Дата,КодМагазина, КодПоставщика, Тип Поставка/OтчетПродаж, ... ) 5. Движения (Ко, КодДокумента, КодТовара, Колво, Сумма, СтавкаНДС и здесь ничего больше липить не надо) для Поставок Колво, Сумма полозительное, для OтчетПродаж отрицательное Эта част вашего совета, как я писал выше, у меня так и сделана, чему искренно радуюсь, потому что она, в принципе совпало с мнением специалиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 21:05 |
|
||
|
Посоветуйте стратегию построения базы.
|
|||
|---|---|---|---|
|
#18+
Да "Остаток" нужен для ускорения работы ценой нарушения нормализации данных(читали уже наверное если нет обезательно прочтите). А нарушении нормализации всегда зло, с помощью механизма тригеров это зло можно свети к минимому, при других вариантах проблем не оберетесь. Во первых работать с проэктом Access также просто как с mdb Во вторых есть бесплатбая версия MS SQL, которую имеет смысл использовать(поэтому я и слова о индексированных предстовлениях не сказал) Так что не вижу оснований не использовать MS SQL и тригеры. Ваши способ с обновлением остатков слишком накладен и вносит слишком много "НО" и "ЕСЛИ". (с) Путь наименьшего сопративления всегда прильный, милиарды электронов не могу ошыбаться Так что или MS SQL и тригеры или mdb и ничего(в принцыпе Access умеет кешировать результаты запросов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 22:28 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=143&tid=1545461]: |
0ms |
get settings: |
11ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 467ms |

| 0 / 0 |
