Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД для книжного магазина / 12 сообщений из 12, страница 1 из 1
19.09.2013, 10:55
    #38401152
valentyn7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
Здравствуйте уважаемые форумчане. Подскажите идею по проектированию БД на MySQL.
Имеется ДБФ файл следующей структуры :

`MONTH` int(4) // Месяц
`YEAR` int(4) // Год
`MAIN_IND` // главный индекс товара
`NAM_IZD` varchar(254) // Наименование товара
`DEP_IND` text // Дополнительный индекс товара
`POST_IND` int(9) // Почтовый индекс магазина
`NAM_TRAKT` varchar(254) // Название магазина
`KOL` int(9) // Количество товара

На основании этого файла нужно сформировать БД.Я создал 3 таблицы следующей структуры:
Таблица в которой названия всех магазинов (100 записей)
CREATE TABLE `department` (
`ID_POST` int(9) NOT NULL AUTO_INCREMENT, // первичный ключ
`POST_IND` int(9) NOT NULL, // почтовый индекс магазина
`NAM_TRAKT` varchar(254) NOT NULL, // название магазина
PRIMARY KEY (`ID_POST`),
UNIQUE KEY `index_post` (`POST_IND`)
)
Таблица по всем товарам (3000 записей)
CREATE TABLE `editions` (
`ID_PUB` int(9) NOT NULL AUTO_INCREMENT, // первичный ключ
`MAIN_IND` int(9) NOT NULL, // главный индекс товара
`DEP_IND` varchar(254) DEFAULT NULL, // дополнительный индекс товара
`NAM_IZD` varchar(254) NOT NULL, // название товара
PRIMARY KEY (`ID_PUB`),
UNIQUE KEY `ID_MAIN` (`MAIN_IND`)
)

Таблица заказов ( 200 000 записей)
CREATE TABLE `orders` (
`ID_ORDER` int(11) NOT NULL AUTO_INCREMENT, // первичный ключ
`ID_PUB` int(9) DEFAULT NULL, // первичный ключ таблицы магазинов
`ID_POST` int(9) DEFAULT NULL, // первичный ключ таблицы товаров
`m_MONTH` int(4) DEFAULT NULL, // месяц
`y_YEAR` int(4) DEFAULT NULL, // год
`KOL` int(9) DEFAULT '0', // количество товара
PRIMARY KEY (`ID_ORDER`)
)

И возникает проблема. Количество товаров меняется каждый день. Тут проблем нет.
Но главный индекс товара, количество подчинённых индексов ,название товара для главного индекса время от времени меняются.
А накладные то ведуться…Если я эти данные буду менять в таблице товаров, то нету просмотра истории, потому что через 3 дня такой же товар может уже идти под другим индексом.Как сделать так,чтобы отслеживались изменения, чтобы можно было видеть
как мигрирует индекс в течении месяца.
Заранее спасибо.
...
Рейтинг: 0 / 0
19.09.2013, 11:05
    #38401167
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
valentyn7Но главный индекс товара, количество подчинённых индексов ,название товара для главного индекса время от времени меняются.Взять в руки биту и хорошенько огреть ею меняющих.
Если нельзя, то отслеживать изменения и вносить новые записи в таблицу товаров (хорошо, что ПК вы сразу сделали суррогатный). Естествено, потом придётся ещё и каким-то образом определять, что за товар в "исходных" документах. Например, по пересечению периода "актуальности" варианта товара и дате документа. Или ещё как-то. В общем, первый вариант гораздо предпочтительней :)
...
Рейтинг: 0 / 0
19.09.2013, 12:19
    #38401281
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
tanglirvalentyn7Но главный индекс товара, количество подчинённых индексов ,название товара для главного индекса время от времени меняются.Взять в руки биту и хорошенько огреть ею меняющих.
Если нельзя, то отслеживать изменения и ...
создать таблицу [ИсторияНазвания] с полями:
1. код (внешний ключ на первичный ключ таблицы editions)
2. дата/время
3. название
4...N. остальные поля, которые меняются

из таблицы editions эти поля выбрасить

с-но, имеете возможность получить название и прочее на любую дату

но начинать нужно с биты
...
Рейтинг: 0 / 0
19.09.2013, 12:21
    #38401285
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
valentyn7,

Приведите пример `editions` с меняющимися записями. Просто немогу понять из написанного что там меняется. Насколько я знаю там меняться нет чему. Изменения года редакции или типографии не в счет - это уже другая позиция, а не та же самая.
...
Рейтинг: 0 / 0
19.09.2013, 12:30
    #38401295
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
Злой Бобрvalentyn7,

Приведите пример `editions` с меняющимися записями. Просто немогу понять из написанного что там меняется. Насколько я знаю там меняться нет чему. Изменения года редакции или типографии не в счет - это уже другая позиция, а не та же самая.вполне могут менять

Код: plaintext
1.
`NAM_IZD` varchar(254) // Наименование товара
`DEP_IND` text // Дополнительный индекс товара

это, конечно, идет как ошибка ввода первички,
и за такое - только бита,
но может биты нету, и у автора единственная задача - автоматизировать бардак :)
...
Рейтинг: 0 / 0
19.09.2013, 13:04
    #38401359
valentyn7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
Chop,

К сожалению это правда. Вот пример
MAIN_IND | DEP_IND | NAM_IZD
89015 | 7201;7356; 2341 | Счастливая и красивая
Через месяц
7201 | 7356;2341;89015 | Счастливая и красивая

Я подозреваю, что у меня не хватает знаний, для того ,чтобы это всё автоматизировать.
Потому и прошу у вас помощи.
Есть программа, она мне выдаёт результат работы в виде ДБФ файла, структуру которого я указал выше. Люди, которые работают с программой могут сами переназначить индекса, тесть подчинённый индекс сделать главным и наоборот.
И мне нужна такая структура БД, чтобы она работала по факту. Получил файл ,если есть изменения в количестве изданий или наименовании издания или подчинённых индексах добавить их в базу.
...
Рейтинг: 0 / 0
19.09.2013, 13:16
    #38401394
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
valentyn7Есть программа...что за программа?
почему нужно писать новую?
старая будет использоваться и дальше?
если да, тогда тем более зачем новая?

если нет - то этими вопросами заморачиваться вообще не стоит -
один раз при переходе на новую программу внесли остатки со старой,
и все,
а в новой программе не должно быть у Пользователей возможности менять индексы,
остальные параметры пусть меняют как хотят
и ес-но сами потом разгребают те бамажки, которые напечатают,
и выясняют, почему в одной накладной напечатано одно, а в другой другое,
и почему, если сейчас распечатать эти накладные, то в них будет третье :)
отчеты у вас будут правильные
...
Рейтинг: 0 / 0
19.09.2013, 17:28
    #38401879
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
valentyn7,

Я так и непонял - за что вы боретесь? У вас по сути 2 варианта:
- создать БД и приложение для нее и перевести весь учет;
- разобраться с тем что есть и допилить.
Третьего недано. Но вы судя по всему пытаетесь идти по третьему пути. В итоге придете в никуда. Не вы первый, не вы последний.
...
Рейтинг: 0 / 0
20.09.2013, 10:22
    #38402445
valentyn7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
Злой Бобр,

Наверное я не правильно выразил мысль. Есть готовый софт, купленный, не мой. Этот софт используется на одном участке. Он даёт информацию в графическом виде и в виде ДБФ файла.
На другом участке есть накладные, туда приходит товар а потом расходиться по всем магазинам.
Задача второго участка, на основании ДБФ файла быстро всё отсортировать по магазинам , разложить по стопочкам. Я создал базу данных которую указал выше, написал клиент на jave,и всё работает. Но время от времени возникают небольшие сбои в связи изменением индексов.
Можно было поступить проще, базу данных вообще не делать, зачем эта история вообще нужна ? Но такой номер не пройдёт, потому как накладная может прийти за позапрошлый месяц, и хочешь не хочешь а вести её надо. Потому я и прошу у форумчан помощи, мне не нужны готовые решения в виде готовых процедур и триггеров, сам справлюсь. Мне нужен дельный совет, как спроектировать БД так, чтобы возможен был обратный синтез информации? Восстановить исходный ДБФ файл во временном разрезе учитывая все изменения что до этого вносились. Если эта задача решаема, то всё остальное просто вопрос времени и прямых рук.
Спасибо всем кто отписался или отпишется, ваше мнение для меня очень важно.
С Уважением.
...
Рейтинг: 0 / 0
20.09.2013, 11:03
    #38402520
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
valentyn7Есть готовый софт, купленный, не мой. Этот софт используется на одном участке. Он даёт информацию в графическом виде и в виде ДБФ файла.
На другом участке есть накладные, туда приходит товар а потом расходиться по всем магазинам.
Задача второго участка... бита, только бита, вам поможет только бита

в ваших условиях задача не решаема - нет у вас на входе данных,
которые позволят отследить кривые руки операторов ввода первички,
анализаторы-автоматы 100%-го решения задачи все-равно не дадут -
придется руцями делать сверки и записывать что на что поменялось

не надо автоматизировать бардак, надо навести порядок
...
Рейтинг: 0 / 0
20.09.2013, 13:29
    #38402739
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
valentyn7Chop,

К сожалению это правда. Вот пример
MAIN_IND | DEP_IND | NAM_IZD
89015 | 7201;7356; 2341 | Счастливая и красивая
Через месяц
7201 | 7356;2341;89015 | Счастливая и красивая


Во-первых, полезно разделить данные на "свои" и "внешние". "Своя" запись о товаре у Вас будет одна, "внешних" может быть много.
В "Свои данные" бы добавил поле, в которое писал бы отсортированные MAIN_IND и DEP_IND (для этих примеров оно будет 2341;7201;7356;89015) и использовал бы его для идентификации того, что Вам приходит "снаружи", во "внешние" - дата актуальности. В накладные можно будет выводить те "внешние" которые актуальны на нужный момент, а в "своих" данных у Вас будет чистота, порядок и никакого бардака с изменениями.
...
Рейтинг: 0 / 0
22.09.2013, 09:57
    #38403796
Torre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД для книжного магазина
Chopне надо автоматизировать бардак, надо навести порядокChop, браво!
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД для книжного магазина / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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