![]() |
|
Модераторы: LSD |
![]()
|
|
| afon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.4.2008 Где: Украина, Киев Репутация: нет Всего: 1 |
Всем привет.
Делаю такую простенькую таблицу некоей статистики при удалении ордеров по заказанным, но не полученным товарам. - Товар могли заказать, но не оплатить, передумали покупать - ТОвар могли заказать, оплатить, но не прийти за ним, бывает всякое. Таких неполученных товаров (то есть заявок по ним, ордеров) очень много, поэтому заявки на них я тру раз в сутки и делаю по ним стистику. Структурка: id (int) магазинId (int) группаМагазиновId (int) количествоНереализованныхЗаявок (int) продуктБылОплачен (bool) дата (timestamp) Ситуация: в разных строках могут пустовать колнки магазинId или группаМагазиновId. Ну, то есть товары могут быть сгурппированные по магазинам или по группам магазинов. Вопрос: на сколько такая ситуация с пустующими колонками плоха для базы данных и будет ли хорошим тоном (и вообще правильно) сделать две таблицы: одну для профуканных товаров по магазинам и одну для профуканным товарам для группМагазинов? PS: база apache Derby |
|||
|
||||
| afon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.4.2008 Где: Украина, Киев Репутация: нет Всего: 1 |
Понял, что вопрос глупый
Тему можно удалить или пофлеймить при желании. |
|||
|
||||
| Gluttton |
|
||||||||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
А вот это всегда пожалуйста Мне кажеться Вы пытаетесь решить задачу с конца Изначально определитесть с предметной областью, которую должна описывать БД. Например:
ОК. Итак выделим существительные, глаголы и прилагательные...
Очень натянуто получилось, но я думаю, в целом картина ясна ОК. Движемся дальше. Существительные будут сущностями, глаголы связями между ними, а прилагательные атрибутами... Т.е. получим что-то вроде такого:
Т.о. у нас должно получиться следующие таблицы: Группы - код группы; - имя группы; - описание. Магазины: - код магазина; - код группы; - имя магазина; - описание. Заказы: - код заказа; - код магазина; - оплата; - получение; - дата оформления заказа. ОК. Движемся дальше... Препарирование... СУБД: Firebird 2.5.
И в результате получаем за указанный период: - количество неоплаченных заказов с группировкой по группам магазинов; - количество неоплаченных заказов с группировкой по магазинам; - описание и перечень неоплаченных заказов; - количество неполученных заказов с группировкой по группам магазинов; - количество неполученных заказов с группировкой по магазинам; - описание и перечень неполученных заказов; Вызовом соответствующей процедуры с указанием временного диапазона. Например, выполнив следующий запрос:
И заполнив таблицы следующими данными: ![]() ![]() ![]() И выполнив вот такой не хитрый запрос:
Мы получим вот такой замечательный результат: ![]() -------------------- Слава Україні! |
||||||||||||
|
|||||||||||||
| afon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.4.2008 Где: Украина, Киев Репутация: нет Всего: 1 |
Gluttton. Потрясающе
И надеюсь, что на это флейм вы не потратили весь день Теперь к делу. 1) я задумался об использовании встроенных процедур. Но тогда возникает вопрос: что для базы выполнить быстрее и легче с точки зрения производительности - процедуру или запрос от приложения? Моя профанская точка зрения говорит , что базе будет все равно. 2) Касаясь моих собственных баранов: у меня между магазином и заказом есть еще товар. Товар может быть или в магазине, или в группе, но не одновременно. А вот магазин может как иметь свои товары, так и быть в группе магазинов, у которых свои товары, а может и не быть в группе. Поэтому ситуации, при которой мы получим вот такой замечательный результат, просто не будет 3) я решил что вопрос тупой, потому что, я уверен, у всех есть таблица "юзер", и в этом юзере есть незаполненные поля. Например, отчество, компания, год рождения и тп. Те же пустые ячейки, и никто не парится. По этим соображениям я решил, что вопрос следует отменить. 4) и не начинал я с конца 5) С существительным, глаголами и прилагательными я еще в таком разрезе не сталкивался. Поэтому спасибо И серьезно, сколько времени у вас ушло на этот мегоответ? |
|||
|
||||
| Gluttton |
|
||||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
Да раз плюнуть
Ну не день, но и не пять минут Я тоже так считаю... Думаю тут многое зависит от СУБД... В Firebird процедура никак не пре-select'ица и никакой предварительной обработки с ней СУБД не производит. А раз так, то СУБД должно быть без разницы. Я считаю, что в XXI веке, простота использования и сопровождения должна быть важнее чем быстродействие Ну... Я структуру БД не видел и с предметной областью не знаком. И я согласен, что на самом деле ситуация может быть сложнее, чем я попытался представить (не сарказм). Я обратить внимание на то, что в работе с БД, очень многое зависит от контекста (предметной областью)...
Ну этогоя не знал Опять таки всё зависит от предметной области... Например в БД Интернет магазина с продолжительностью жизни заказа до трех дней фамилия и отчество не важны, а вот номер телефона критически важен, а для БД ГАИ, например, наоборот: необходимы и фамилия и имя и отчества, а вот номер телефона там совершенно не нужен.
Это не моя идея smile ... Почерпнуто отсюда: ISBN 5-8459-0109-X. Часа два точно...
Ну а вот раз так и нужно нужно решить конкретную задачу, то для получения конструктивного ответа необходимо сообщить следующую информацию: - СУБД; - стуктура БД; - краткое описание предметной области (при необходимости); - набор тестовых данных; - желаемый результат. И я думаю, что на этом форуме вопрос будет обязательно решен -------------------- Слава Україні! |
||||||||
|
|||||||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |