|
|
|
| Помогите пожалуйста со структурой базы данных.
Необходимо вести учёт такого вида:
Есть подразделения которые получают разнообразный набор материалов.
Пример: Подразделение "А" получило 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
Но данная структура не работает :-( не позволяет накопить сразу несколько видов материалов | |
|
| |
|
|
|
| имхо
сперва нужно определить, в каких единицах будет вестись учет
возможно потребуется таблица единиц измерения
tblUnit
UnitID
Name
кг, ящик, вагон, литр... | |
|
| |
|
|
|
| хорошо определяемся:
учет ведем в таком виде:
яблоки - на 3рубля
груши - на 5 рублей
банананы - на 10 рублей
---------------------------------------
яблоки/груши/банананы - Они вместе занимают 2 места (место абстрактная величина которая удовлетворяет условиям применения --- может быть мешком, сумкой, ящиком)
Так будет получше? | |
|
| |
|
|
|
| нет, не лучше - у Вас не определено понятие "место"
и как я понимаю, в общем случае оно может принимать абстрактное значение
попробуйте тогда ввести понятие "партия" и писать в таблицу "операции" партию
к этой таблице добавить еще одну таблицу - "товары в партии" | |
|
| |
|
|
|
| Фиксирую понятие "место" - количество мест товара отправленных в данное подразделение
то есть таблица 3 tblOperacii примет вид:
3) tblOperacii - таблица самой операции
_________
idOperacii - уникальный номер операции
DataOperacii - дата проведения операции
Mest - количество мест отправленных в подразделение
PartiyaID - код партии из таблицы tblPartiya связан с idPartiya
CustomerNameID - код получателя из таблицы tblCustomer связан с idCustomer
4) tblPartiya - таблица партии заказа
________
idPartuya - уникальный код партии
MaterialNameID - код материала из таблицы tblMaterial связан с idMaterialName
Summa - сумма за данный материал
так? | |
|
| |
|
|
|
| это как вариант
если будет работать так, как Вам нужно, значит так.
если не будет, нужно будет выложить сюда ВСЕ исходные данные - то, что должно получиться | |
|
| |
|
|
|
| Что-то не срастается.
Сижу смотрю на структуру и понимаю что в tblOperacii поле PartiyaID не позволит (как мне видится получить искомый результат) по причине того что партия Одна и включает в себя несколько наименований материалов.
Или я что то недопонял из вышеописанного.
Может все же:
3) tblOperacii
__________
idOperacii - уникальный номер операции
DataOperacii - дата проведения операции
Mest - количество мест отправленных в подразделение
CustomerNameID - код получателя из таблицы tblCustomer связан с idCustomer
4) tblPartiya - таблица партии заказа
________
idPartuya - уникальный код партии
MaterialNameID - код материала из таблицы tblMaterial связан с idMaterialName
Summa - сумма за данный материал
OperaciyaID - код операции из таблицы tblOperacii связан с idOperacii
то есть из третьей таблицы выкидываем PartiyaID, а в четвертую партийную добавляем связанное поле OperaciyaID? или из-за этого изменения я не смогу запрашивать о данных партии? | |
|
| |
|
|
|
| у меня всегда было слабо развито пространственное воображение :(
накидайте в экселе данные:
- мы имеем
- мы хотим получить | |
|
| |
|
|
|
| Боюсь в excel это будет совсем уж абстрактно, но я попробую, проще наверно схему данных разместить?!
дописано:
Как то сплошной текст получается даже и не знаю что делать.
схема данных
http://slil.ru/26638029 | |
|
| |
|
|
|
| ну так я ж говорю - в эксель
слева описываем несколько партий, которые приходят (отправляются)
справа - то что хотим получить
========================
можно в аксесе накидать таблиц со связями и показать здесь | |
|
| |
|
|
|
| упс таблицы только что разместил | |
|
| |
|
|
|
| И все таки - нужны данные
структура, которую Вы выложили, ничего не проясняет
пысы
если Вы и дальше планируете заниматься программированием, приучите себя идентичным полям в разных таблицах давать идентичные имена, например, поле idCustomer лучше назвать CustomerID и в таблице tblOperacii это поле должно быть также названо CustomerID, а никак не CustomerNameID | |
|
| |
|
|
|
| Спасибо за пысы, учёл его и поправил структуру, теперь действительно стало проще ориентироваться.
Прикладываю excel файл с данными:
слева то что отправили и когда
справа то что необходимо получить на выходе
собственно сам файл
http://slil.ru/26640168 | |
|
| |
|
13 Кб. |
|
| примерное решение прилагаю (на скорую руку)
(правда мне так и не понятно - зачем вести учет мест, тем более таким образом?) | |
|
| |
|
|
|
| Благодарю.
Вопрос tblUnit какие данные отображает?
Про учёт мест: база узконаправлена, увы, а условия задачи не совсем оптимальны, потому что конечно лучше ввести единицу измерения и учитывать конкретно её, но тут получается что несколько материалов скидывается в одну коробку/мешок/ящик и руководству не важно во что это сложено - важно только сколько мест с материалами отправлено туда то или туда то, и и соответственно каких материалов. Я наверно не очень хорошо это обьясняю.
Сейчас попробую применить данную схему, уточните только по tblUnit пожалуйста | |
|
| |
|
|
|
| Засада, не могу обьединить tblOperation(OperationID) и tblOperationMaterial(OperationID)
пишет: не удаётся создать отношение с обеспечением целостности данных :-(
P/C надо было вычестить таблицу Операций ... Все соединил | |
|
| |
|
|
|
| это таблица единиц измерения.
например, Вам может в дальнейшем понадобиться вести учет в ящиках, мешках бутылках, которые не взвешиваются.
начальство можно пока и не слушать
через месяц оно подойдет и скажет - отличную программу ты написал, молодец !
только вот сколько мы Васе Пупкину в прошлом месяце сала отравили в килограммах ?
а ХЗ товарищ начальник ?
так что я бы не поленился и вел учет как положено - в единицах учета товара | |
|
| |
|
|
|
| О, то есть смотрим в будущее?
учел, такое действительно высоковероятно. теперь попробую понаполнять и посмотреть с запросами.
p/s наполнил, накидал простой запрос и понял теперь почему вы все время про места спрашивали, если не заполнять таблицу измерений то получается путаница, потому что в запросе выдаётся подсчет MestNum для каждого материала, несмотря на то что материалы то были отправлены одним и тем же местом. | |
|
| |
|
|
|
| Дрюня правильно говорит лучше вести учет в единицах измерения чем в местах, чтоб в дальнейшем не лохануться | |
|
| |