powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / помогите спроектировать базу по ЗП
25 сообщений из 29, страница 1 из 2
помогите спроектировать базу по ЗП
    #35348009
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
требуется спроектировать базу по расчёту заработной платы на строительной фирме.
усложнять ничего ненадо - это лабораторная работа! расчёт зп идёт по сделке..

нужно чтобы база работала с запросами:
1. Из списка сотрудников выбрать сотрудников, заработная плата которых за последние 3 месяца составляет цифру большую определённой.
2. Определить за прошедший месяц общую сумму отчислений отдельно по видам отчислений.
3. Подсчитать количество работников, имеющих иждивенцев и получающих льготы на них.
4. Отчёт по любому из запросов

Помогите пожалуйста.. немогу разобраться в этой предметной области потому незнаю какие и сколько создавать таблиц. :(
подробное задание в прикреплёном файле
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35348012
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
читал вот тут /topic/37397&pg=1
слишком сложно для лаб.работы. прошу не направлять туда :)
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35348084
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постановка задачи нечеткая, следовательно к её решению можно подойти либо формально, либо творчески. Формально - это прочитать все используемые слова и сделать минимум таблиц и логики, удовлетворяющих постановке задачи в самой простой форме. Творчески - написать удобный инструмент, который можно использовать многократно и в широком спектре задач.

Предлагаю начинать с формального. Понадобятся всего две таблички:
Сотридуники (код, ФИО, количество иждевенцев, льготы)
Отчисления (код, код сотрудника, вид отчисления, дата, сумма)

Успехов!
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35348379
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересное предложение
поле "код сотрудника" является внешним ключом?

что то мне не нравится таблица Отчисления (код, код сотрудника, вид отчисления, дата, сумма)
а если на одного сотрудника будет несколько отчислений? (или я чегото недопонимаю:( )

какие ещё есть предложения?

ps: я только учусь работать с базами..
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35348540
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
telcompа если на одного сотрудника будет несколько отчислений? (или я чегото недопонимаю:( )
Связь один-ко-многим
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35348969
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FAndrew telcompа если на одного сотрудника будет несколько отчислений? (или я чегото недопонимаю:( )
Связь один-ко-многим

действительно))
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35348998
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что будет содержать поле "льготы"? я так думаю если у сотрудника есть иждевенци значит он уже получает льготы или нет?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35349012
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это к законодательству. Я предположил, что кроме льгот на иждивенцев, могут быть еще льготы какие-то.
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35349087
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь понял для чего это поле :) спасибо что объяснили.
попробую собрать в ErWin-е
вопросы буду задавать по ходу :)
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35349141
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Минуточку.. А как же таблица ЗП?? забыли :(
ведь есть же запрос: 1. Из списка сотрудников выбрать сотрудников, заработная плата которых за последние 3 месяца составляет цифру большую определённой.

как лучше сделать таблицу?
ЗП(код, код сотрудника, зп, дата) привязать её связью один-ко-многим к таблице сотрудники. так пойдёт?

и ещё вопрос. можно ли обойтись без первичного ключа в таблице ЗП я думаю он не нужен?
"код сотрудника" мигрирует из таблицы сотрудники и будет внешним ключом я правильно понимаю?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35349730
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
telcompкак лучше сделать таблицу?
ЗП(код, код сотрудника, зп, дата)
Вы не путаете зарплату как параметр трудового договора, и фактические удержания и отчисления сотруднику с кодом (типом) этих удержаний и отчислений?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35349891
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
telcompА как же таблица ЗП?
Под зарплатой понимается сумма всех отчислений за определенный месяц. Так проще всего и не противоречит заданию.
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35350586
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Student007Под зарплатой понимается сумма всех отчислений за определенный месяц. Так проще всего и не противоречит заданию.
Отчислений?!? Может быть все-таки начислений?
Вам начисляют оклад, премию и т.д. А удерживают налоги и прочую хрень.
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35350702
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Student007Под зарплатой понимается сумма всех отчислений за определенный месяц
Так это сводная таблица?
(ищет смайлик с выпученными выпригивающими глазами)
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35351970
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Student007
Под зарплатой понимается сумма всех отчислений за определенный месяц

Это как?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35351974
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а всётаки.. таблица ЗП нужна или нет?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35354734
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам решать. Если оплата сдельная и регистрировать зарплату надо только по факту отчислений, то можно и без таблицы зарплат. Но если хотите творчески.... то спросите у Сергея Васкецова =))
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35356438
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Student007Вам решать. Если оплата сдельная и регистрировать зарплату надо только по факту отчислений, то можно и без таблицы зарплат. Но если хотите творчески.... то спросите у Сергея Васкецова =))
Дело не в творчестве как таковом.
В случае расчета зарплат всегда необходимо понимать, на основании чего начислена какая сумма. То есть, как и в случае расчета суммы налога по налогооблагаемой базе, необходимо хранить и саму базу, и правило вычисления, и сумму налога. Так же и здесь, только все намного сложнее. А зарплата всегда считается просто как сумма начислений в разрезе статей (для случая, когда отчисления могут быть и по трудовым договорам, и по гражданско-правовым, и алименты всякие, и налогообложение разное может быть у разных статей). Хранить зарплату (в смысле цифры денег, сколько человек фактически получил в месяц) - смысла практически никакого.
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35357448
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ВаскецовХранить зарплату (в смысле цифры денег, сколько человек фактически получил в месяц) - смысла практически никакого.

Сергей Васкецов, а как же я тогда буду проводить выборку:
telcomp1. Из списка сотрудников выбрать сотрудников, заработная плата которых за последние 3 месяца составляет цифру большую определённой.
если не буду хранить зарплату?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35357459
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
telcompСергей Васкецов, а как же я тогда буду проводить выборку
Ну, используя разделы WHERE и/или HAVING оператора SELECT наверное.
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35357698
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецовнеобходимо хранить и саму базу, и правило вычисления, и сумму налога

Это нужно тогда, когда зарплату вычисляют/рассчитывают из других данных. А если только хранить информацию о зарплате, но не заниматься её расчетами, то сойдет =)
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35358263
cuvashi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю такой вариант. Ответы в конце.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
--справочник сотрудников
create table w_employee
(
 id integer not null,
 empl_name varchar( 55 ) not null,
 birth_yearr integer,  -- понадобится при расчете ЕСН
 sex_id  integer, -- тоже
 ..
  primary key(id)
) 
#
-- сравочник подразделений
create table w_division
(
 id integer not null,
 div_name varchar( 50 ) not null,
 primary key(id)
) 
#

--лицевые счета
--сотрудник может работать в нескольких подразделениях
--по совместительству
create table w_account
(
 id integer not null,
 div_id integer not null, -- ссылается на w_division
 empl_id integer not null, --ссылается на w_employee
 salary decimal( 15 , 2 ), --оклад

 child_count integer, --число иждевенцев
 child_summa decimal( 15 , 2 ), -- сумма на одного иждевенца

 ...
 primary key(id)
) 
#
alter table w_account add constraint fk_account_employee foreign key(empl_id)
references w_employee(id);
#
alter table w_account add constraint fk_account_division foreign key(div_id)
references w_division(id);
#

-- виды оплат и удержаний
-- коды до 100 начисления
-- например код 2 повременная оплата по окладу
-- дальше удержания
-- например код 101 - налог
create table w_kindpay
(
 id integer not null,
 kind_name varchar( 50 ) not null,
 ok_tax integer,
 ...
  primary key(id)
) 
#

--ведомости начислений и удержаний
--бухгалтер знает, кому начислить или удержать дополнительно 
--заводит рукам
--должен быть еще табель, в котором отражено фактически отработанное время,
--календарь планового времени но это опущено
create table w_sheet
(
 id integer not null,
 acc_id integer not null, -- ссылается на w_account
 monthh integer  not null,
 yearr integer   not null,

 kind_id integer not null, -- код начисления или удержания
 summa  decimal( 15 , 2 ), 
 
 primary key(id)
) 
#

alter table w_sheet add constraint fk_sheet_account foreign key(acc_id)
references w_account(id);
#
alter table w_sheet add constraint fk_sheet_kindpay foreign key(kind_id)
references w_kindpay(id);
#


-- результат после расчета
create table w_result
(
 id integer not null,
 acc_id integer not null, 
 monthh integer  not null,
 yearr integer   not null,

 kind_id integer not null,
 summa  decimal( 15 , 2 ), 
 
 primary key(id)
) 
#

alter table w_sheet add constraint fk_sheet_account foreign key(acc_id)
references w_account(id);
#
alter table w_sheet add constraint fk_sheet_kindpay foreign key(kind_id)
references w_kindpay(id);
#


-- процедура расчета зарплаты подразделения за определенный год и месяц
-- упрощенная, без фактически отработанного времени
create procedure w_calc2half(div_id integer,monthh integer,yearr integer)
as

declare variable acc_id integer;
declare variable summa_for_tax decimal( 15 , 2 );

declare variable kind_id integer;
declare variable summa decimal( 15 , 2 );
declare variable ok_tax integer;
begin
-- получаем оклады сотрудников
 for select id,salary 
  from w_account where div_id=:div_id
   into :acc_id,:summa
    do
    begin
      summa_for_tax=summa;
     
     --должен быть табель, но пока нет 
      insert into w_result(monthh,yearr,acc_id,kind_id,summa)
       values (:monthh,:yearr,:acc_id, 2 ,:summa); -- код оплаты 2- по умолчанию для оклада
   
     --обрабатываем ведомости
      for select a.kind_id,a.summa,b.ok_tax
        from w_sheet a,w_kindpay b
         where a.acc_id=:acc_id and a.kind_id=b.id
          into :kind_id,:summa,:ok_tax
           do
           begin
            if(ok_tax= 1 ) then
             summa_for_tax=summa_for_tax+summa; -- накапливаем сумму для налога
           --здесь можно что то дополнительно расчитать
            insert into w_result(monthh,yearr,acc_id,kind_id,summa)
              values (:monthh,:yearr,:acc_id,:kind_id,:salary);
           
           end
   
   --удерживаем налог 13 процентов
   --здесь нужно убрать из облагаемой суммы суммы льгот
   --summa_for_tax=summa_for_tax-summa_privileges
   --...
     insert into w_result(monthh,yearr,acc_id,kind_id,summa_for_tax)
              values (:monthh,:yearr,:acc_id, 101 ,:summa_for_tax* 0 . 13 );

   
   
   end

end
#

--1. Из списка сотрудников выбрать сотрудников, заработная плата которых за последние 3 месяца составляет цифру большую определённой.
select empl_name,sum(a.summa)
  from w_result a,w_account b,w_employee c
   where a.acc_id=b.id and b.empl_id=c.id
   and monthh>= 3  and monthh<= 5   -- последние три месяца
       and yearr= 2008 
      group by empl_name
        having sum(a.summa)> 10000  -- определенная зарплата

--2. Определить за прошедший месяц общую сумму отчислений отдельно по видам отчислений.        
select kind_name,sum(a.summa)
 from w_result a,w_kindpay b
  where a.kind_id=b.id
   and monthh= 5  and yearr= 2008   -- последний месяц
    group by kind_name

--3. Подсчитать количество работников, имеющих иждивенцев и получающих льготы на них.    
select count(*) from w_account
 where child_count<> 0  and and child_summa<> 0 

--4. Отчёт по любому из запросов 
--дальше сами
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35358736
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Student007Это нужно тогда, когда зарплату вычисляют/рассчитывают из других данных. А если только хранить информацию о зарплате, но не заниматься её расчетами, то сойдет =)
Да ну, серость во всех смыслах, не интересно.
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35360467
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
объясните мне пожалуйста по слогам что это такое:

alter table w_account add constraint fk_account_employee foreign key(empl_id)
references w_employee(id);

и как это можно реализовать в ErWIN?
...
Рейтинг: 0 / 0
помогите спроектировать базу по ЗП
    #35360753
telcomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот накидал базу в ErWIN 4.0 по коду cuvashi
посмотрите плиз всё ли я правильно понял
и правильно ли раставил связи?
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / помогите спроектировать базу по ЗП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]