Ім'я файлу: ТЗ-Book.docx
Розширення: docx
Розмір: 19кб.
Дата: 13.03.2021
скачати
Пов'язані файли:
Тема 4.pptx
file_436422.rtf

База данных «Книжный магазин»





  1. Таблицы в БД «Книжный магазин»:
















Заказы




Заказы_данные




Остатки

ндок




ндок




Книга_ID

Дата




нпоз




Остаток

Покупатель_ID




Книга_ID




Резерв

Сумма_RUR




Колво







Оплата_RUR




Отпущено













Цена_RUR






















Книги




Разделы




Покупатели

Книга_ID




Раздел_ID




Покупатель_ID

Название




Раздел




Название

Автор_ID










Баланс

Год выпуска




Авторы







Цена_RUR




Автор_ID







Раздел_ID




Фамилия













Имя













Отчество























Поля:

Раздел_ID – к какому типу можно отнести книгу, например «Научная фантастика», «Школьные учебники».

Остаток – физический остаток книг на складе (то, что реально лежит на складе, включая то, что клиент заказал, но еще не получил).

Резерв – количество товара, которое клиенты заказали, но еще не забрали. Соответственно, клиенты могут заказать только то, что еще не зарезервировано (остаток - резерв). То есть физический остаток делится на две части: то, что кто-то зарезервировал и то, что доступно для резервирования.

Баланс – колво денег на счету у покупателя, которые покупатель предварительно внес Вам на счет для закупки книг.

Сумма_RUR – суммарная стоимость заказанных книг по этому документу.

Оплата_RUR – сколько клиент заплатил (0 – если еще не оплачивал или равна Сумма_RUR, если заплатил, промежуточных значений в нашей модели нет). По желанию клиента можно оплатить средствами с баланса.

Колво – заказанное покупателем количество книги Книга_ID в документе ндок в строке нпоз. Обратите внимание, что в одном документе под разными нпоз можно заказать одну и ту же книгу.

Отпущено – количество, которое клиент забрал. Считаем, что если покупатель забирает, то всегда весь товар из документа (то есть отпущено во всем документе либо равно Колво, либо равно 0).

Цена_RUR в Заказы_данные - цена книги, по которой покупатель сделал заказ в этом документе, а в таблице Книги – текущая цена книги.
Заказать книги покупатель может, только если у него на балансе есть не менее 10% от суммарной стоимости заказываемого. Для оплаты из баланса необходимо, чтобы суммы на балансе было достаточно для полной оплаты выбранного заказа.
Под словами «заказано» - понимается всё, что есть в заказах, под словами «отгружено» понимается то, что отгружено покупателю (проставлено поле «отпущено»). Под словами «выкуплено», «куплено», «продано» понимаются заказы и книги, которые покупатель оплатил, то есть в документе, содержащем эти книги, в поле «оплата_rur» проставлено значение равное «сумма_rur». Совсем необязательно, что покупатель уже забрал эти книги со склада. Забрать можно и до оплаты и после оплаты.


  1. Требуется создать БД (а в Access и схему данных). Вы можете создать таблицы самостоятельно и заполнить их данными либо самостоятельно, либо из приложенного Excel файла.


Каждый лист имеет название, совпадающие с таблицей, в которую данные с листа нужно вставить.

Как вставлять в Access: проще всего скопировать данные из файла и вставить в открытую таблицу.
Данные сгенерированы полуавтоматически, так что могут быть недостатки. При обнаружении недостатков включать собственные интеллектуальные процессы.


  1. Написать следующие запросы (название запроса должно начинаться с пункта, по которому он написан):




  1. По каждой книге посчитать стоимость заказанного, проданного и отгруженного по месяцам в 2019 году. Выводить всё в одном селекте.

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

  3. По каждому автору вывести его рейтинг за последний месяц. У автора с максимальной суммарной стоимостью заказанного рейтинг = 1, у второго по суммарной стоимости заказанного рейтинг = 2 и тд. В случае, если существует несколько авторов с одинаковой стоимостью, рейтинг по каждому равен максимальному для них возможному. Например, суммарная стоимость по 1-ому автору = 100, по двум следующим 50, рейтинг 1-ого равен единице, рейтинги 2-ого и 3-его равны трем.

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

  5. Вывести книги, которые есть в остатке на сейчас, но их не ставили в заказ после 01.10.19.

  6. Вывести покупателя и такие его книги, что покупатель заказывал эти книги до 01.10.19, но не заказывал после 01.10.19, при этом эти книги есть в наличии (остаток > 0)

  7. Вывести долю товара в резерве (доля в стоимости и доля от штук) от суммарного физического остатка на текущий момент.

  8. Вывести покупателей, которые забрали книги, но не оплатили заказ, и тех, которые оплатили заказ, но книги не забрали. Для таких покупателей кроме названия вывести: 1) стоимость отпущенных книг, за которые не заплатили, 2) суммарную оплату за книги, которые они еще не забрали.

  9. По коду книги, количеству, покупателю_ID показывать, возможен ли заказ этого товара с указанным количеством. Код книги, колво, код покупателя передаются параметрами. Запрос должен возвращать 0, если не возможен, иначе 1. (то есть покупатель хочет заказать определенную книгу, мы должны сказать, может он это сделать или нет. Подумайте, в каком случае «нет»).

  10. Написать запрос, который по номеру документа проставляет итоговое значение Сумма_RUR в Заказах, равное суммарной стоимости всех книг в Заказы_данные.

  11. По номеру заказа определять, можно ли полностью оплатить его из баланса покупателя. Запрос должен возвращать 1 – если можно, 0 – иначе.

  12. Написать запрос, который по номеру заказа проставляет оплату в заказе (если это можно сделать) и обновляет баланс покупателя. Желательно в одном предложении (в случае ошибки, чтобы автоматически откатывались обе транзакции), но можно сделать и разными запросами.

  13. Написать запрос, который по заданному номеру заказа изменяет поле «Резерв» в остатках по каждому товару из заказа на величину заказанного. (То есть запрос, который по заказу резервирует товар, чтобы количество, которое заказал наш покупатель, не было доступно для заказа другим покупателям, но не забываем, что товар покупатель еще со склада не забрал). Не забывайте, что в одном заказе одна книга может встречаться в разных строках, проверьте, что Ваш запрос работает правильно.

  14. Написать запрос, который по заданному номеру заказа изменяет поле «Остаток» в остатках по каждой книге из заказа на величину отпущенного, а также соответствующим образом изменяет поле «Резерв». (То есть покупатель забирает зарезервированный товар со склада, что при этом должно произойти с остатками этого товара на складе?) Комментарий про одинаковые книги в одном заказе в силе.

  15. Написать запрос, который по всем неоплаченным заказам за вчера, возвращает неотпущенные книги из резерва в продажу. (Покупатель не оплатил и не забрал книги из своего заказа, модель бизнес-процесса в п.15 говорит, что вернем такие книги в свободный доступ для всех покупателей. Какие поля нужно изменить?)


Под последним месяцем в тексте задания понимается следующее:

если сегодня 30.11.15, то расчеты нужно проводить с 30.10.15 по 30.11.15 (не включая 30.11.15)
скачати

© Усі права захищені
написати до нас