Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2009, 15:21   #1
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию Как правильно построить базу данных на таблицах, пересекающих по полям

Здравствуйте!

Формирую базу данных учета для фитнес-клуба. В ней созданы формы Продажа товаров, Закупка товаров, Продажа абонементов, Расходы... , которые пересекаются по полям Дата, Товар, Клиент....

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

- упрощение кода и структуры;
- обеспечение обязательного заполнения всех полей в формах;
- возможность получения общего запроса по всем операциям;
- легкость формирования различного рода отчетов.

1 вариант: независимые таблицы:

Продажа (ID продажа, Дата, Товар, Клиент, Цена продажа, Кол-во продажа, Клиент продажа[/b])
Закупка (ID закупка, Дата, Товар, Клиент, Цена закупка, Кол-во закупка, )

2 вариант: объединенная таблица:

Операция (ID операция, Дата, Товар, Клиент, Цена продажа, Кол-во продажа, Цена закупка, Кол-во закупка)

3 вариант: вывод общих полей в отдельную таблицу:

Операция (ID операция, Дата, Товар, Клиент,)
Продажа (ID продажа, ID операция, Цена продажа, Кол-во продажа)
Закупка (ID закупка, ID операция, Цена закупка, Кол-во закупка, )

Склоняюсь к 3 варианту (вложен файл), но проблема с нормальной работой запросов:

Операция запрос (ID операция, Дата, Товар, Клиент,, ID продажа, Цена продажа, Кол-во продажа, ID закупка, Цена закупка, Кол-во закупка)
Продажа запрос (ID операция, Дата, Товар, Клиент,, ID продажа, Цена продажа, Кол-во продажа)
Закупка запрос (ID операция, Дата, Товар, Клиент,, ID закупка, Цена закупка, Кол-во закупка)

Просьба помочь организовать правильную структуру базы


Проконсультировавшись дополнительно в Инете, получил следующий ответ:

Все 3 варианта считают неправильным, вот так лучше советуют:

Операция (ID операция, Тип операции, Дата, Товар, Клиент, Цена продажа, Кол-во, Цена)

На основе этой таблице я потом должен сделать запросы Продажа и Закупка и получать все итого расчетным путем.

Если не будет других мнений, тему можно считать закрытой.
Вложения
Тип файла: rar 3вариант.rar (18.5 Кб, 17 просмотров)

Последний раз редактировалось touchka; 26.12.2009 в 14:17. Причина: Дописан ответ - если не будет больше мнений, тему можно считать закрытой
touchka вне форума Ответить с цитированием
Старый 26.12.2009, 13:31   #2
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Почитав форумы, практически ответил на свой вопрос:
БД с пересекающимися полями лучше изначально строить на независимых таблицах (вариант1), а для получения общего свода делать объединение таблиц
.

Осталось решить вопрос с формирование запроса на объединение.

Для удобства упрощу сведения о таблицах.

Т1 (К1,A,B,С,D)
Т2 (К2,A,B,С,F)
Т3 (К3,A,B,С,G)

Необходимо получить таблицу Т0 (К0,A,B,С,D,F,G)

Пока сам не нашел еще ответа.
touchka вне форума Ответить с цитированием
Старый 26.12.2009, 18:31   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте touchka.
1- "упрощение кода и структуры;"
решение конкретной задачи (проекта) требует досконального изучения предмета с которым она работает. Но без верной структуры (как сейчас) перспектив реальной работоспособности почти нет.
2- "обеспечение обязательного заполнения всех полей в формах;"
применима установка свойства поля "Обязательное поле - Да" (NOT NULL) или проверка заполнения в интерфейсной части (форме), может быть и одно и другое.
3- "возможность получения общего запроса по всем операциям;"
только после построения структуры данных.
4- "легкость формирования различного рода отчетов."
зависит от структуры данных и способа формирования отчета (я склоняюсь к созданию отчетов на шаблонах Excel)
Конечно умение приходит с опытом, но как говорят - нарабатывать свой опыт лучше на чужом опыте а не на своих ошибках, в предыдущей Вашей теме я писал о "длинных именах", а Вы все же хотите убедиться в моей правоте на собственных ошибках.
Удачи Вам.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 26.12.2009, 19:08   #4
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Евгений, спасибо большое за комментарий, правильное направление кажется нащупал, постараюсь не наворотить дров.

Уверяю Вас, что я сразу учел в работе над реальной базой Ваши замечания про длинные имена и уже меньше начал терять время на исправления. В этой теме просто увлекся самим вопросом.
touchka вне форума Ответить с цитированием
Старый 27.12.2009, 15:59   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте touchka.
"формирование запроса на объединение" - может выглядеть так:
Код:
select k1 as k0, a, b, c, d, '' as f, '' as g from t1 
union
select k2 as k0, a, b, c, '' as d, f, '' as g from t2 
union
select k3 as k0, a, b, c, '' as d, '' as f, g from t3
если в полях d, f, g с отсутствующими значениями должна применяться не строка нулевой длины (''), а нулевое значение или NULL, замените два апострофа на 0 или NULL соответственно.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.12.2009, 18:43   #6
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Евгений, благадарю в помощи и по вопросу объединения. Сложно для понимания, еще не сталкивался, буду разбираться на практике
touchka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при вводе данных на одной форме - добавить запись на двух связанных таблицах? маврик Microsoft Office Access 13 05.11.2009 10:40
Как правильно построить индексы? Olga_3005 SQL, базы данных 1 04.09.2009 23:02
посоветуйте как правильно построить график vakyla Общие вопросы Delphi 11 31.03.2009 08:12
Как правильно построить цикл для выборки? Tanuska___:) БД в Delphi 1 12.01.2009 14:50
Как создать базу данных? LeonKing Помощь студентам 4 07.05.2008 14:11