Всем привет. Нужна ваша помощь в создании базы данных. Не совсем понимаю как правильно связать таблицы в базе данных. Какие таблицы нужно добавить для корректного выполнения этого задания:
Задание 1. Создайте базу данных «Спортивный магазин».
Эта база данных должна содержать информацию о товарах,
продажах, сотрудниках, клиентах. Необходимо хранить
следующую информацию:
О товарах: название товара, вид товара (одежда, обувь,
и т.д.), количество товара в наличии, себестоимость, производитель,
цена продажи
О продажах: название проданного товара, цена продажи,
количество, дата продажи, информация о продавце
(ФИО сотрудника, выполнившего продажу), информация
о покупателе (ФИО покупателя, если купил зарегистрированный
покупатель)
О сотрудниках: ФИО сотрудника, должность, дата приёма
на работу, пол, зарплата
О клиентах: ФИО клиента, email, контактный телефон,
пол, история заказов, процент скидки, подписан ли на
почтовую рассылку.
Исходя из материала, я понимаю что в данном случае нужно в таблицу продажи добавить внешние ключи, который будет ссылаться на товар, клиента и продавца. Только не совсем понимаю:
Как реализовать то, чтобы не было возможности купить 3 товара, если их на складе 2 (как это проверить в таблице с продажами).
Как сделать так, чтобы товар на складе уменьшался по мере его продажи.
В таблице о продажах есть условие “показать информацию о покупателе, если он зарегистрирован”, то есть BuyerId int null что ли? Разве так можно?
И еще нужно ли делать отдельную таблицу GoodsSales в этом случае?
Можно конечно, почему нельзя?
Но я не очень понимаю этот пункт, инфа о покупателе же в любом случае нужна, иначе кому продавать.
Хотя например если человек просто пришел в оффлайн магазин и купил, то её может не быть.
Да я и сам не понимаю полностью. В онлайн-магазине смотреть теоретически ты можешь не регистрируясь. А, если ты покупаешь, то вводишь свои данные. Но в условие написано, так как написано)
Это только я чувствую себя иногда гением, а иногда тупым (пока чаще, все-таки, тупым), после того, как начал этим всем заниматься? Самооценка сильно упала
Вернулся к этому заданию снова. Пытаюсь сделать следующее:
Хранимая процедура показывает информацию о самом
успешном продавце. Успешность определяется по общей
сумме продаж за всё время
Так вот как сделать так, чтобы цена умножалась еще на количество товара?
create proc sp_best_seller as
begin
select top 1 s.Name,s.Surname,s.Position,s.Gender,s.Position,s.Salary
from Sellers s
where exists
(select sum(Price), ProductId
from Goods g join Sales sa on ProductId=g.Id
group by ProductId)
end