|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.12.2009, 15:21 | #1 |
Пользователь
Регистрация: 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 операция, Тип операции, Дата, Товар, Клиент, Цена продажа, Кол-во, Цена) На основе этой таблице я потом должен сделать запросы Продажа и Закупка и получать все итого расчетным путем. Если не будет других мнений, тему можно считать закрытой. Последний раз редактировалось touchka; 26.12.2009 в 14:17. Причина: Дописан ответ - если не будет больше мнений, тему можно считать закрытой |
26.12.2009, 13:31 | #2 |
Пользователь
Регистрация: 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) Пока сам не нашел еще ответа. |
26.12.2009, 18:31 | #3 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте touchka.
1- "упрощение кода и структуры;" решение конкретной задачи (проекта) требует досконального изучения предмета с которым она работает. Но без верной структуры (как сейчас) перспектив реальной работоспособности почти нет. 2- "обеспечение обязательного заполнения всех полей в формах;" применима установка свойства поля "Обязательное поле - Да" (NOT NULL) или проверка заполнения в интерфейсной части (форме), может быть и одно и другое. 3- "возможность получения общего запроса по всем операциям;" только после построения структуры данных. 4- "легкость формирования различного рода отчетов." зависит от структуры данных и способа формирования отчета (я склоняюсь к созданию отчетов на шаблонах Excel) Конечно умение приходит с опытом, но как говорят - нарабатывать свой опыт лучше на чужом опыте а не на своих ошибках, в предыдущей Вашей теме я писал о "длинных именах", а Вы все же хотите убедиться в моей правоте на собственных ошибках. Удачи Вам. Евгений. |
26.12.2009, 19:08 | #4 |
Пользователь
Регистрация: 21.12.2009
Сообщений: 10
|
Евгений, спасибо большое за комментарий, правильное направление кажется нащупал, постараюсь не наворотить дров.
Уверяю Вас, что я сразу учел в работе над реальной базой Ваши замечания про длинные имена и уже меньше начал терять время на исправления. В этой теме просто увлекся самим вопросом. |
27.12.2009, 15:59 | #5 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте touchka.
"формирование запроса на объединение" - может выглядеть так: Код:
Евгений. |
27.12.2009, 18:43 | #6 |
Пользователь
Регистрация: 21.12.2009
Сообщений: 10
|
Евгений, благадарю в помощи и по вопросу объединения. Сложно для понимания, еще не сталкивался, буду разбираться на практике
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как при вводе данных на одной форме - добавить запись на двух связанных таблицах? | маврик | 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 |