weranda
@weranda

Как составить таблицу?

Вводные данные
  • Есть три субъекта хозяйственной деятельности: компания, управляющий, работник.
  • В компании есть несколько направлений деятельности: продажа игрушек, обслуживание автомобилей, стирка ковров.
  • Между компанией и управляющими по каждому направлению достигнуто соглашение о том, что управляющие организуют работу и часть выручки отдают компании. Между управляющими и работниками достигнута такая же договоренность.
  • У компании несколько представительств в разных регионах. Как следствие — много управляющих по каждому направлению деятельности и работников. В одном направлении может быть несколько конкурирующих между собой управляющих.


Задача
Составить таблицу или таблицы БД для распределения процентных долей участников хозяйственной деятельности таким образом, чтобы можно было потом удобно посчитать долю каждого участника и сумму, которую он должен передать «наверх»: работник управляющему, управляющий компании.

Конкретный пример по продажам игрушек
Между управляющим и работником достигнута договоренность: работник оставляет себе 50% от выручки, остальное передает управляющему (50%).
Между компанией и управляющим достигнута договоренность: управляющий оставляет себе 10% от выручки, остальное передает компании (40%).
Распределение: работник забирает 50%, управляющий забирает 10%, компания забирает 40%.
Продажа. Была продана игрушка за 1100 рублей, расход на нее составил 100 рублей. Нужно посчитать доли участников хоз. деятельности и суммы к оплате «наверх». Данные по выручке вводятся вручную, а вот доли и суммы должны рассчитываться автоматически.

три варианта таблиц:
1
__________
участник хоз. деятельности
направление
%


2
__________
старший
младший
направление
% старшего
% младшего

3
__________
компания
управляющий
работник
категория
% компании
% управляющего
% работника


Какую таблицу выбрать, почему, или что-то другое сообразить?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
https://1drv.ms/u/s!AnKvsQ9OCWw6gatTAp_I5x-gtq-N3g...
Вот примерная схема со всеми словарями.
Ключевое тут то что создаются словари и пара вьюшек.

CREATE VIEW [dbo].[ProfitShareView]
AS
SELECT ps.Id, c.Name, m.LastName + ' ' + m.FirstName + ' ' + m.MiddleName AS Manager, e.LastName + ' ' + e.FirstName AS Employer, a.Name AS Activity, ps.CompanyPercent, ps.ManagerPercent, ps.EmployeerPercent
FROM   dbo.ProfitShare AS ps INNER JOIN
             dbo.Companies AS c ON c.Id = ps.CompanyId INNER JOIN
             dbo.Managers AS m ON m.Id = ps.ManagerId INNER JOIN
             dbo.Employees AS e ON e.Id = ps.EmployeeId INNER JOIN
             dbo.activities AS a ON a.Id = ps.ActivityId
GO


Продажи
CREATE VIEW [dbo].[TotalSalesView]
AS
SELECT s.Id, s.Name, s.PurchasePrice, s.Price, e.LastName + ' ' + e.FirstName AS emploer, m.LastName + ' ' + m.FirstName AS manager, a.Name AS activity, dbo.Companies.Name AS Company, (s.Price - s.PurchasePrice) * p.EmployeerPercent / 100 AS empRegward, (s.Price - s.PurchasePrice) 
             * p.ManagerPercent / 100 AS managerRegward, (s.Price - s.PurchasePrice) * p.CompanyPercent / 100 AS companyRegward
FROM   dbo.Sales AS s INNER JOIN
             dbo.ProfitShare AS p ON s.EmployerId = p.EmployeeId INNER JOIN
             dbo.Employees AS e ON s.EmployerId = e.Id INNER JOIN
             dbo.Managers AS m ON p.ManagerId = m.Id INNER JOIN
             dbo.Activities AS a ON p.ActivityId = a.Id INNER JOIN
             dbo.Companies ON p.CompanyId = dbo.Companies.Id
GO
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
участник хоз. деятельности
старший участник хоз. деятельности
направление -- если "направление" влияет на "процент"
%
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы