|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2022, 21:11 | #1 |
Новичок
Джуниор
Регистрация: 19.04.2022
Сообщений: 1
|
Выполнение одним запросом
Всем привет! )
Меняю место работы, прислали тестовое задание, зарылся на пунктах 2.4 и 2.5. Помогите пожалуйста, ткните носом в нужном направлении ) Тестовое задание вставил ниже. 1. Создайте БД с наименованием “TestST”, и в ней следующие таблицы (поля): 1.1.Магазины (наименование таблицы: “Shops”) • Идентификатор магазина (“Id”, целое положительное число); • Наименование магазина (“Name”, строка Unicode, макс. длина 50 символов); Значение поля – идентификатора является уникальным и автоинкрементным. Значение поля - наименования магазина является уникальным. 1.2.Товары (наименование таблицы: “Products”) • Идентификатор товара (“Id”, целое положительное число); • Наименование товара (“Name”, строка Unicode, макс. длина 50 символов); Значение поля – идентификатора является уникальным и автоинкрементным. Значение поля - наименования товара является уникальным. 1.3.Покупатели (наименование таблицы: “Buyers”) • Идентификатор покупателя (“Id”, целое положительное число); • ФИО покупателя (“FIO”, строка Unicode, макс. длина 100 символов); • Номер телефона покупателя (“PhoneNumber”, строка Unicode, длина 12 символов); Значение поля – идентификатора является уникальным и автоинкрементным. Значение поля - ФИО покупателя является уникальным. Значение поля – номера телефона покупателя является уникальным. 1.4.Остатки товара (наименование таблицы: “Rests”) • Идентификатор товара (“ProductId”, целое положительное число); • Идентификатор магазина (“ShopId”, целое положительное число); • Количество товара на остатке в штуках (“Quantity”, целое неотрицательное число); Комбинация значений двух полей - идентификаторов таблицы является уникальной. 1.5.Документы продаж (наименование таблицы: “Documents”) • Идентификатор документа (“Id”, целое положительное число); • Идентификатор товара (“ProductId”, целое положительное число); • Идентификатор магазина (“ShopId”, целое положительное число); • Идентификатор покупателя (“BuyerId”, целое положительное число); • Количество купленного товара в штуках (“PurchaseQty”, целое неотрицательное число) • Дата/время покупки (“PurchaseDateTime”, дата/время); Комбинация значений полей – идентификаторов документа и товара является уникальной. Комбинация значений полей – идентификаторов товара, магазина и покупателя также является уникальной. Значение поля - идентификатора документа НЕ является автоинкрементным, а формируется при создании документа. Все таблицы обязательно должны содержать первичный ключ, а также уникальные ограничения для полей (или их комбинаций), не входящих в него, но содержащих уникальные значения. Все поля всех таблиц НЕ могут принимать неопределенное значение (“null”). Для таблиц остатков и документов необходимо создать проверочные ограничения для полей с количеством товара, а также внешние ключи (к таблицам магазинов, товаров, (покупателей)). Таблицы могут содержать и прочие ограничения/индексы, а также триггеры (при необходимости). Создание прочих объектов в БД (других таблиц, представлений, ХП, функций и т.п.) запрещено и считается нарушением условий задания! 2. Заполните таблицы условными данными (в указанном порядке): 2.1.Магазины: необходимо создать ровно 100 записей. Наименование магазина должно быть комбинацией наименования (условного для тестового задания) торговой сети и номера (например: “Лента №1”, “Магнит №10” и т.п.). Заполнение всех магазинов необходимо выполнить ОДНИМ запросом к БД. 2.2.Товары: необходимо создать ровно 1000 записей. Наименование товара должно быть комбинацией из названия, производителя и цвета товара (из любого условного ассортимента штучного товара для тестового задания, например: “Телефон Samsung черный”, “Холодильник LG серебристый” и т.п.). Заполнение всех товаров необходимо выполнить ОДНИМ запросом к БД. 2.3.Покупатели: необходимо создать ровно 100 записей. ФИО покупателя должно быть комбинацией из условных фамилии, имени и отчества (рекомендуется взять наиболее распространенные), номер телефона должен быть уникальной строкой формата “+7XXXXXXXXXX” (где “X” – любая цифра от 0 до 9). Заполнение всех покупателей необходимо выполнить ОДНИМ запросом к БД. 2.4.Остатки товара: в результате заполнения для КАЖДОГО магазина на остатке должно оказаться не менее 150 и не более 300 записей товарных позиций (точное количество определяется в указанном диапазоне случайным образом). Количество товара на остатке для каждой позиции определяется также случайным образом в диапазоне не менее 1000 штук и не более 2000 штук (таким образом задание существенно упрощается - исключается необходимость контролировать остаток товара при дальнейшем заполнении таблицы документов - его гарантированно “хватит на всех покупателей даже при максимально возможных количествах покупок”). Заполнение всех остатков по всем магазинам необходимо выполнить ОДНИМ запросом к БД. 2.5.Документы продаж: необходимо заполнить таким образом, чтобы КАЖДЫЙ покупатель купил в КАЖДОМ магазине не менее 3% и не более 7% от находящихся на остатке данного магазина товарных позиций (конкретные позиции определяются случайным образом) с количеством от 1 до 10 штук для каждой товарной позиции (точное количество определяется в указанном диапазоне также случайным образом). Значение поля - идентификатора документа формируется единым для каждой комбинации значений полей-идентификаторов магазина и покупателя и не должно повторяться у других значений полей этих идентификаторов. Значение поля даты/времени покупки формируется единым для каждого значения идентификатора документа и не должно повторяться у других значений поля этого идентификатора. Заполнение всех документов по всем покупателям необходимо выполнить ОДНИМ запросом к БД (при этом необходимо выполнить уменьшение количеств товара на остатке (в таблице остатков) соответственно общим количествам купленного в документах товара по магазинам). |
20.04.2022, 16:08 | #2 |
Форумчанин
Регистрация: 07.10.2017
Сообщений: 101
|
На "тестовое" задание мало похоже, скорее курсовая, или кто-то негров эксплуатирует
Слишком много текста, и требований отработать ручками... для понимания умений по БД достаточно трех таблиц с небольшим количеством данных... Тебя парень разводят, если конечно все что пишешь является правдой |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подсчет одним запросом. Возможно ли? | Majestio | SQL, базы данных | 8 | 28.10.2014 15:54 |
выборка одним запросом | limon142 | PHP | 1 | 25.05.2014 20:18 |
Выбрать данные из 2 таблиц одним запросом | Linel | SQL, базы данных | 4 | 16.02.2011 15:29 |
Инвертировать значение поля (INT) одним запросом | InternetStranger | SQL, базы данных | 7 | 04.08.2010 11:50 |
BETWEEN и LIKE одним запросом | Pinya | SQL, базы данных | 9 | 19.08.2008 11:30 |