Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите со структурой базы данных (Access 2003)
 
 автор: sapog6olotnij   (12.02.2009 в 10:50)   личное сообщение
 
 

Помогите пожалуйста со структурой базы данных.

Необходимо вести учёт такого вида:
Есть подразделения которые получают разнообразный набор материалов.

Пример: Подразделение "А" получило 12 февраля 2009 года:
- яблоки на 10 рублей
- груши на 5 рублей
- апельсины на 3 рубля
Суммарный объём поставленного составил 2 сумки(ящика), учитывается суммарный объём, а не конкретно сколько сумок яблок или груш.

Необходимо чтобы в дальнейшем была возможность создания запроса вида:
Сколько мест яблок и груш и на какую сумму отправили в подразделении таком то

у меня получается вот такая структура
3 таблицы:

1) tblCustomer - таблица получателей
__________
idCustomer - уникальный код получателя
CustomerName - наименование получателя

2) tblMaterial - справочник материалов
________
idMaterial - уникальный код материала
MaterialName - наименование материала

3) tblOperacii - таблица самой операции
_________
idOperacii - уникальный номер операции
DataOperacii - дата проведения операции
Mest - количество мест отправленных в подразделение
MaterialNameID - код материала из таблицы tblMaterial связан с idMaterialName
CustomerNameID - код получателя из таблицы tblCustomer связан с idCustomer

Но данная структура не работает :-( не позволяет накопить сразу несколько видов материалов

  Ответить  
 
 автор: Дрюня   (12.02.2009 в 11:10)   личное сообщение
 
 

имхо
сперва нужно определить, в каких единицах будет вестись учет
возможно потребуется таблица единиц измерения
tblUnit
UnitID
Name
кг, ящик, вагон, литр...

  Ответить  
 
 автор: sapog6olotnij   (12.02.2009 в 11:21)   личное сообщение
 
 

хорошо определяемся:
учет ведем в таком виде:

яблоки - на 3рубля
груши - на 5 рублей
банананы - на 10 рублей
---------------------------------------
яблоки/груши/банананы - Они вместе занимают 2 места (место абстрактная величина которая удовлетворяет условиям применения --- может быть мешком, сумкой, ящиком)
Так будет получше?

  Ответить  
 
 автор: Дрюня   (12.02.2009 в 12:10)   личное сообщение
 
 

нет, не лучше - у Вас не определено понятие "место"
и как я понимаю, в общем случае оно может принимать абстрактное значение
попробуйте тогда ввести понятие "партия" и писать в таблицу "операции" партию
к этой таблице добавить еще одну таблицу - "товары в партии"

  Ответить  
 
 автор: sapog6olotnij   (12.02.2009 в 12:44)   личное сообщение
 
 

Фиксирую понятие "место" - количество мест товара отправленных в данное подразделение

то есть таблица 3 tblOperacii примет вид:
3) tblOperacii - таблица самой операции
_________
idOperacii - уникальный номер операции
DataOperacii - дата проведения операции
Mest - количество мест отправленных в подразделение
PartiyaID - код партии из таблицы tblPartiya связан с idPartiya
CustomerNameID - код получателя из таблицы tblCustomer связан с idCustomer

4) tblPartiya - таблица партии заказа
________
idPartuya - уникальный код партии
MaterialNameID - код материала из таблицы tblMaterial связан с idMaterialName
Summa - сумма за данный материал

так?

  Ответить  
 
 автор: Дрюня   (12.02.2009 в 13:13)   личное сообщение
 
 

это как вариант
если будет работать так, как Вам нужно, значит так.
если не будет, нужно будет выложить сюда ВСЕ исходные данные - то, что должно получиться

  Ответить  
 
 автор: sapog6olotnij   (12.02.2009 в 14:58)   личное сообщение
 
 

Что-то не срастается.
Сижу смотрю на структуру и понимаю что в tblOperacii поле PartiyaID не позволит (как мне видится получить искомый результат) по причине того что партия Одна и включает в себя несколько наименований материалов.
Или я что то недопонял из вышеописанного.

Может все же:
3) tblOperacii
__________
idOperacii - уникальный номер операции
DataOperacii - дата проведения операции
Mest - количество мест отправленных в подразделение
CustomerNameID - код получателя из таблицы tblCustomer связан с idCustomer

4) tblPartiya - таблица партии заказа
________
idPartuya - уникальный код партии
MaterialNameID - код материала из таблицы tblMaterial связан с idMaterialName
Summa - сумма за данный материал
OperaciyaID - код операции из таблицы tblOperacii связан с idOperacii

то есть из третьей таблицы выкидываем PartiyaID, а в четвертую партийную добавляем связанное поле OperaciyaID? или из-за этого изменения я не смогу запрашивать о данных партии?

  Ответить  
 
 автор: Дрюня   (12.02.2009 в 16:21)   личное сообщение
 
 

у меня всегда было слабо развито пространственное воображение :(
накидайте в экселе данные:
- мы имеем
- мы хотим получить

  Ответить  
 
 автор: sapog6olotnij   (12.02.2009 в 17:08)   личное сообщение
 
 

Боюсь в excel это будет совсем уж абстрактно, но я попробую, проще наверно схему данных разместить?!
дописано:

Как то сплошной текст получается даже и не знаю что делать.

схема данных
http://slil.ru/26638029

  Ответить  
 
 автор: Дрюня   (12.02.2009 в 18:01)   личное сообщение
 
 

ну так я ж говорю - в эксель
слева описываем несколько партий, которые приходят (отправляются)
справа - то что хотим получить
========================
можно в аксесе накидать таблиц со связями и показать здесь

  Ответить  
 
 автор: sapog6olotnij   (12.02.2009 в 18:02)   личное сообщение
 
 

упс таблицы только что разместил

  Ответить  
 
 автор: Дрюня   (12.02.2009 в 18:29)   личное сообщение
 
 

И все таки - нужны данные
структура, которую Вы выложили, ничего не проясняет

пысы
если Вы и дальше планируете заниматься программированием, приучите себя идентичным полям в разных таблицах давать идентичные имена, например, поле idCustomer лучше назвать CustomerID и в таблице tblOperacii это поле должно быть также названо CustomerID, а никак не CustomerNameID

  Ответить  
 
 автор: sapog6olotnij   (13.02.2009 в 10:30)   личное сообщение
 
 

Спасибо за пысы, учёл его и поправил структуру, теперь действительно стало проще ориентироваться.

Прикладываю excel файл с данными:
слева то что отправили и когда
справа то что необходимо получить на выходе
собственно сам файл
http://slil.ru/26640168

  Ответить  
 
 автор: Дрюня   (13.02.2009 в 11:22)   личное сообщение
13 Кб.
 
 

примерное решение прилагаю (на скорую руку)
(правда мне так и не понятно - зачем вести учет мест, тем более таким образом?)

  Ответить  
 
 автор: sapog6olotnij   (13.02.2009 в 11:44)   личное сообщение
 
 

Благодарю.

Вопрос tblUnit какие данные отображает?

Про учёт мест: база узконаправлена, увы, а условия задачи не совсем оптимальны, потому что конечно лучше ввести единицу измерения и учитывать конкретно её, но тут получается что несколько материалов скидывается в одну коробку/мешок/ящик и руководству не важно во что это сложено - важно только сколько мест с материалами отправлено туда то или туда то, и и соответственно каких материалов. Я наверно не очень хорошо это обьясняю.

Сейчас попробую применить данную схему, уточните только по tblUnit пожалуйста

  Ответить  
 
 автор: sapog6olotnij   (13.02.2009 в 12:01)   личное сообщение
 
 

Засада, не могу обьединить tblOperation(OperationID) и tblOperationMaterial(OperationID)

пишет: не удаётся создать отношение с обеспечением целостности данных :-(

P/C надо было вычестить таблицу Операций ... Все соединил

  Ответить  
 
 автор: Дрюня   (13.02.2009 в 12:02)   личное сообщение
 
 

это таблица единиц измерения.
например, Вам может в дальнейшем понадобиться вести учет в ящиках, мешках бутылках, которые не взвешиваются.
начальство можно пока и не слушать
через месяц оно подойдет и скажет - отличную программу ты написал, молодец !
только вот сколько мы Васе Пупкину в прошлом месяце сала отравили в килограммах ?
а ХЗ товарищ начальник ?
так что я бы не поленился и вел учет как положено - в единицах учета товара

  Ответить  
 
 автор: sapog6olotnij   (13.02.2009 в 12:07)   личное сообщение
 
 

О, то есть смотрим в будущее?
учел, такое действительно высоковероятно. теперь попробую понаполнять и посмотреть с запросами.

p/s наполнил, накидал простой запрос и понял теперь почему вы все время про места спрашивали, если не заполнять таблицу измерений то получается путаница, потому что в запросе выдаётся подсчет MestNum для каждого материала, несмотря на то что материалы то были отправлены одним и тем же местом.

  Ответить  
 
 автор: ars_bs   (14.02.2009 в 07:51)   личное сообщение
 
 

Дрюня правильно говорит лучше вести учет в единицах измерения чем в местах, чтоб в дальнейшем не лохануться

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList