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

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

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

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

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

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

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

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

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

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

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

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

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

Это нужно тогда, когда зарплату вычисляют/рассчитывают из других данных. А если только хранить информацию о зарплате, но не заниматься её расчетами, то сойдет =)
...
Рейтинг: 0 / 0
06.06.2008, 07:37
    #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
06.06.2008, 11:24
    #35358736
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектировать базу по ЗП
Student007Это нужно тогда, когда зарплату вычисляют/рассчитывают из других данных. А если только хранить информацию о зарплате, но не заниматься её расчетами, то сойдет =)
Да ну, серость во всех смыслах, не интересно.
...
Рейтинг: 0 / 0
06.06.2008, 18:38
    #35360467
telcomp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите спроектировать базу по ЗП
объясните мне пожалуйста по слогам что это такое:

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

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


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