|
|
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
Нужно хранить логистические данные для последующего статистического анализа Вопрос в том - какой вариант проектирования лучше ? (идеологически, и по быстродействию) А то я про нормальные формы читал, но так и не вкурил к какой форме относятся эти 2 варианта . Имеются связи с: т. Товары, т. Магазины, табл. Поставщики Вариант 1 : с 1й таблицей "Операции" : Поля: Н_недели, Товары_код, Магазины_код (ключевые), количество_закупки, цена_закуп, количество_продажи, цена_розн, количество_перемещения, количество_наличие, ну и поставщики_код итд. Вариант 2 - разбить на 4 таблицы: Закупки, Продажи, Перемещения, Наличие В каждой те же 3 ключевых поля Н_недели, Товары_код, Магазины_код , + специфика В 1 варианта естественно, некоторые поля будут null Объем БД - 3-4млн строк для таблицы Операции (1й вариант проектирования) или для таблицы Наличие, другие таблицы в несколько (или несколько десятков) раз меньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 02:24 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
baleks Нужно хранить логистические данные для последующего статистического анализаТо бишь проектируем хранилище данных . Давайте ваши факты 1 Такого то числа, такой то товар, в таком то магазине, продан по такой то цене, такого то количества, на сумму прилагается 2 Такого то числа, такой то товар, был куплен у такого то поставщика, количество, цена, стоимость. 3 Такого то числа, такой то товар, был перемещен в количестве штук, со склада, на склад 4 Наличие в собственной таблице не нуждается и идеологически правильно давать ответ на лету прошерстив приход, расход, и перемещение 5 что-нибудь еще В зависимости от ваших данных и операций с ними (загрузка, запросы) определяется конечные таблицы (что-то денормализуется, что-то объединяется, что-то секционируется) baleks А то я про нормальные формы читал, но так и не вкурил к какой форме относятся эти 2 варианта. Курить лучше не нормализацию а http://sql.ru/forum/actualthread.aspx?tid=283388 плюс сайт Константина Лисянского ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 06:51 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
SERG1257 Давайте ваши факты 0 Такого то числа, такой то товар, в таком то магазине , был в наличии в таком количестве, по такой то цене 1 Такого то числа, такой то товар, в таком то магазине , продан такого то количества (цена подразумевается из наличия) 2 Такого то числа, такой то товар, привезен в такой-то магазин , от такого то поставщика, количество, цена. 3 Такого то числа, такой то товар, из такого-то магазина/склада , был перемещен в количестве штук (т.е. сумма на любое число,товар по всем магазинам = 0) 4 Наличие в собственной таблице не нуждается и идеологически правильно давать ответ на лету прошерстив приход, расход, и перемещение Боюсь только что 1. Шерстить долго будет, если при каждом запросе 2. По причине раздолбайности тех кто вносил данные, наличие_нов не всегда = наличие_стар +-приход,перемещения,продажи. Даже боюсь проверять этот факт :-) В зависимости от ваших данных и операций с ними (загрузка, запросы) определяется конечные таблицы (что-то денормализуется, что-то объединяется, что-то секционируется) Операции даже не знаю какие точно будут, будет анализ различный статистический, abc-анализ, много сводных таблиц, итд. p.s. спасибо огромное за ссылки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 14:43 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
baleks Боюсь только что 1. Шерстить долго будет, если при каждом запросе 2. По причине раздолбайности тех кто вносил данные, наличие_нов не всегда = наличие_стар +-приход,перемещения,продажи. Даже боюсь проверять этот факт :-) p.s. спасибо огромное за ссылки! 1. При правильно построенном индексе ничего тормозить не должно, хотя это конечно зависит, на чем у вас база сидит. Но без этого у вас рано или поздно остатки с оборотами начнут расходиться, мало ли где кто чего ручками в базе подправит :) 2. Если это равенство не выполняется, тогда вообще непонятно, зачем это все автоматизировать. :) Лучше уж сделать доп тип операции "инвентаризация", на который списывать все расхождения, если уж так все страшно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 15:37 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
Ortogon 1. При правильно построенном индексе ничего тормозить не должно, хотя это конечно зависит, на чем у вас база сидит. Но без этого у вас рано или поздно остатки с оборотами начнут расходиться, мало ли где кто чего ручками в базе подправит :) 2. Если это равенство не выполняется, тогда вообще непонятно, зачем это все автоматизировать. :) Лучше уж сделать доп тип операции "инвентаризация", на который списывать все расхождения, если уж так все страшно. Да у меня вобщем-то не база не для автоматизации, а как правильно заметил SERG1257, хранилище данных. А именно, я перегоняю 4Гб excel-файлов в MS Access для статистического анализа (каждый excel файл по 30мб, импортируется, нормализуется скриптом, и эти данные занимают в результате в базе около 3мб). А т.к. импорт такого количества данных в моем случае операция не быстрая, хотелось бы перед импортом всем данных определиться со структурой таблиц. Вот и прошу совета с этим... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:32 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
ну тогда ваша таблица обороты (вариант 1) где магазины, поставщики и покупатели это места хранения (обобщенные склады). А уже в самой таблице складов будет определены дополнительные столбцы Если факт наличия столь важен (хранится в отдельном файле, подписан акт инвентаризации и т.п.) то можете хранить это как остатки на каждый день. но обычно хранят остатки на начало месяца. Поищите на форуме про автоматизацию складского учета. baleks 2. По причине раздолбайности тех кто вносил данные, наличие_нов не всегда = наличие_стар +-приход,перемещения,продажи. Даже боюсь проверять этот факт :-)Так цель учета и состоит в том чтобы поинтересоваться - а не было ли в этом злого умысла, а куда усохли десять вагонов солярки. baleks А именно, я перегоняю 4Гб excel-файлов в MS Access для статистического анализа (каждый excel файл по 30мб, импортируется, нормализуется скриптом, и эти данные занимают в результате в базе около 3мб).это каждый день или разово? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 17:17 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
SERG1257 baleks А именно, я перегоняю 4Гб excel-файлов в MS Access для статистического анализа (каждый excel файл по 30мб, импортируется, нормализуется скриптом, и эти данные занимают в результате в базе около 3мб).это каждый день или разово? Это разово. Данные реального предприятия за 2 года, для анализа. Пишу диплом :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 17:22 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
p.s. данные у меня не по дням, а по неделям. импортируемые из экселя данные - по 1му 30-60мб файлу на каждую неделю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 17:26 |
|
||
|
Вопрос: как правильно спроектировать таблицу
|
|||
|---|---|---|---|
|
#18+
Раз разово и для диплома, то можете не парится. Объемы маленькие, главный критерий - простота. В любом случае вариант 1 как самый простой. Еще раз обращаю внимание что наличие - это производная таблица, которая может материализоваться для увеличения быстродействия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 06:08 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36597617&tid=1542739]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 356ms |

| 0 / 0 |
