|
|
|
проектирование БД
|
|||
|---|---|---|---|
|
#18+
Доброго дня. Мне не обходимо спроектировать базу данных( и реализовать ), которая будет отражать перемещение определенного товара по городам. Задача примерно такая: есть множество единиц товара, каждй из которых имеет уникальный номер. В каждый момент времени товар может находиться либо в каком-то городе( список определён ) либо, в перелете из одного в другой. Поиск осуществляется следующим образом: выбирается город, а потом из списка товаров, находящихся там или находящихся на рейсе который летит в этот город, выбирается конретная вещь. На выбранный товар должна отбражаться информация: где находится, текстовой комментарий, и номер будущегго рейса, если товар сейчас в воздухе, номер рейса, дата и пункты прибытия-отправления, будущий рейс это рейс который будет осуществлен после выполнения текущего рейса, после наступления даты отправки. Я думаю сделать примерно так, создается три таблицы: Продукция, Рейсы, СписокГородов. Список рейсов содержит следующую информацию: уникальный № рейса, даты и пункты отправления-прибытия. Список продукции: № текущего рейса, № будуещего рейса, город, дата прибытия(эти 2 колонки равны колонкам город и дата прибытия из таблицы Рейсы), ну и ёщё несколько колонок характеристик товара. При выполении запроса списка товаров находящихся в городе, выполняем поиск в таблице Рейсы по колонке "Город", далее проверяем колонку номерРейса, если она пустая, значит товар в городе, смело добавляем этот ящик в список. Если же номер ТекущегоРейса непустой, то здесь все сложнее, значит он погружен на рейс летящий в этот город. Потом надо проверит если текущая дата больше даты прибытия самолета, но меньше даты отправления БудущегоРейса(это рейс который будет выполнен сразу за ТекущимРейсом :)) интересно, это кто-нибудь ёщё читает или все уже махнули рукой? :) ), тогда ячейке ТекущийРейс присваиваем значение БудущегоРейса, и обнуляем БудущийРейс. Если же текущая дата меньше даты прибытия БудущегоРейса, тогда присваиваем колонке "Город" значение пункта назначения БудущегоРейса и обнуляем номера Текущего и БудущегоРейса. Это сделано для того чтобы, если инфу о ящике не запрашивали такое долгое время, что успели выполниться оба рейса. В общих чертах вроде все, то есть есть конечно,есть ёщё много тонкостей, которые нужно учесть, но это потом, когда я буду уверен, что основа верная, поэтому пишите что думаете, буду благодарен за любые комментарии по теме, это у меня первый опыт подобной работы, а посоветоваться не с кем, есть препод по БД в универе, но он не станет все это выслушивать :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 17:32 |
|
||
|
проектирование БД
|
|||
|---|---|---|---|
|
#18+
Вам бы чего-нибудь про нормализацию почитать. Конкретно по задаче - как минимум таблицу "продукция" лучше делать по-другому. Как, скажем, Вы заведете товар, который просто лежит в городе и не был ни в одном рейсе? Кроме того, вся история товара, в каких рейсах и как его возили по городам и весям - у Вас теряется. Лучше сделать отдельную таблицу "продукты", в которой хранить только атрибуты продукции, и 2 связующие таблицы "продукты-города" и "продукты-рейсы"(в принципе можно обойтись одной, но я бы сделал две) с одинаковой стуктурой (id города или рейса, id товара, количество). При назначении товара в рейс - заносить в "продукты-рейсы" id товара, id рейса и количество, одновременно вычитая (или удаляя) это количество из записи таблицы "продукты-города", соответствующие городу отбытия и данному товару. по прибытии - наоборот, если запись о таком товаре в городе прибытия есть, то прибавлять количество, иначе - вставлять новую запись. Тут еще вопрос - всегда ли у рейса только пункт отправления и пункт назначения, не может ли 1 рейс проехать по нескольким городам? Тогда надо делать еще связующую таблицу "города-рейсы", в которую вносить id города, id рейса, дату прибытия, дату отбытия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 22:42 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=131&tid=1544983]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 303ms |

| 0 / 0 |
