Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
Здравствуйте знатоки. Внимание вопрос!


Как сделать,чтобы при добавлении должности в таблицу "сотрудники". В таблице "отдел" уменьшалось количество свободных мест?

И нужно ли менять что-то связях таблиц?

К сообщению приложен файл. Размер - 20Kb
24 мар 17, 17:51    [20330559]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37068
Написать соответстсвующий триггер, например.

Сообщение было отредактировано: 24 мар 17, 17:55
24 мар 17, 17:55    [20330575]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
Гавриленко Сергей Алексеевич
Написать соответстсвующий триггер, например.

таблицы нормально составлены?

можете хотя бы в нескольких словах описать,как он будет действовать триггер? код я уж сам попробую написать
нам ум вообще ничего не приходит.
24 мар 17, 18:06    [20330605]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
buven
Member

Откуда:
Сообщений: 792
fantanol
Здравствуйте знатоки. Внимание вопрос!

Как сделать,чтобы при добавлении должности в таблицу "сотрудники". В таблице "отдел" уменьшалось количество свободных мест?

И нужно ли менять что-то связях таблиц?


В таблице Отдел у вас нет поля "Свободные места". Что апдейтить будем?
Как в вашей схеме в отдел будете добавлять штатную единицу?

Продолжаете мешать в кучу задачи клиента и сервера...

P.S. Какую оценку вам поставили за кинотеатр?
24 мар 17, 18:09    [20330613]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
buven

В таблице Отдел у вас нет поля "Свободные места". Что апдейтить будем?
Как в вашей схеме в отдел будете добавлять штатную единицу?

Продолжаете мешать в кучу задачи клиента и сервера...

P.S. Какую оценку вам поставили за кинотеатр?



Штатную единицу в количестве же указывать,или нет?



За кинотеатр - 8
24 мар 17, 18:21    [20330644]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37068
fantanol
таблицы нормально составлены?
Для проектирования здесь есть отдельный форум.
24 мар 17, 18:26    [20330664]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
sql_user2
Member

Откуда:
Сообщений: 382
По идее, можно создать триггер на форматирование.
24 мар 17, 18:30    [20330675]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
o-o
Guest
sql_user2
По идее, можно создать триггер на форматирование.

вот, товарищ понимает.
в связи с вашей бурной деятельностью, связанной с форматированием,
вам же и поручили написать триггер на форматирование?
это похвальная инициатива.
но сработает ли он на удаление лишних файлов лога мимо корзины?
...минуточку, дайте подумать...
а, ну конечно, ведь удаление у нас совсем(совсем)
24 мар 17, 18:36    [20330702]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
sql_user2
Member

Откуда:
Сообщений: 382
o-o
sql_user2
По идее, можно создать триггер на форматирование.

вот, товарищ понимает.
в связи с вашей бурной деятельностью, связанной с форматированием,
вам же и поручили написать триггер на форматирование?
это похвальная инициатива.
но сработает ли он на удаление лишних файлов лога мимо корзины?
...минуточку, дайте подумать...
а, ну конечно, ведь удаление у нас совсем(совсем)

регулярно!
24 мар 17, 18:38    [20330709]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
iiyama
Member

Откуда:
Сообщений: 642
fantanol,
Если мой телепатический скилл прокачен хорошо, то Вам не нужен триггер, а что то вроде этого
create table Dep(id_dep int identity(1,1) primary key, depname nvarchar(50), dep_emp_limit int)
create table Emp(id_emp int identity(1,1) primary key, id_dep int, id_staff int, firstname nvarchar(50), lastname nvarchar(50),
	constraint Fk_dep_emp1 foreign key (id_dep) references Dep(id_dep)
	);

insert dep(depname, dep_emp_limit) VALUES (N'IT', 10),(N'Sales',200),(N'Logistic', 20);
insert Emp(id_dep , id_staff , firstname , lastname) values
(1,1,N'fn1',N'ln1'),(1,1,N'fn2',N'ln2'),(1,1,N'fn3',N'ln3'),

(2,1,N'fn4',N'ln4'),(2,1,N'fn5',N'ln5'),(2,1,N'fn6',N'ln6'),
(2,1,N'fn7',N'ln7'),(2,1,N'fn8',N'ln8'),(2,1,N'fn9',N'ln9'),
(2,1,N'fn10',N'ln10'),(2,1,N'fn11',N'ln11'),(2,1,N'fn12',N'ln12'),

(3,1,N'fn13',N'ln13'),(3,1,N'fn14',N'ln14'),(3,1,N'fn15',N'ln15'),
(3,1,N'fn16',N'ln16'),(3,1,N'fn17',N'ln17'),(3,1,N'fn18',N'ln18')

go
create view ViewDepInfo
AS
select 
	d.id_dep
	, d.depname
	, d.dep_emp_limit
	, ISNULL(oa.emp_in_dep_cnt,0) as emp_in_dep_cnt
	, d.dep_emp_limit-ISNULL(oa.emp_in_dep_cnt,0) as dep_emp_free 
from Dep d outer apply (select count(*) from Emp e where e.id_dep=d.id_dep)oa(emp_in_dep_cnt)
go

select * from ViewDepInfo

go
drop view ViewDepInfo
drop table Emp
drop table Dep
24 мар 17, 18:44    [20330723]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
iiyama
fantanol,
Если мой телепатический скилл прокачен хорошо, то Вам не нужен триггер, а что то вроде этого
create table Dep(id_dep int identity(1,1) primary key, depname nvarchar(50), dep_emp_limit int)
create table Emp(id_emp int identity(1,1) primary key, id_dep int, id_staff int, firstname nvarchar(50), lastname nvarchar(50),
	constraint Fk_dep_emp1 foreign key (id_dep) references Dep(id_dep)
	);

insert dep(depname, dep_emp_limit) VALUES (N'IT', 10),(N'Sales',200),(N'Logistic', 20);
insert Emp(id_dep , id_staff , firstname , lastname) values
(1,1,N'fn1',N'ln1'),(1,1,N'fn2',N'ln2'),(1,1,N'fn3',N'ln3'),

(2,1,N'fn4',N'ln4'),(2,1,N'fn5',N'ln5'),(2,1,N'fn6',N'ln6'),
(2,1,N'fn7',N'ln7'),(2,1,N'fn8',N'ln8'),(2,1,N'fn9',N'ln9'),
(2,1,N'fn10',N'ln10'),(2,1,N'fn11',N'ln11'),(2,1,N'fn12',N'ln12'),

(3,1,N'fn13',N'ln13'),(3,1,N'fn14',N'ln14'),(3,1,N'fn15',N'ln15'),
(3,1,N'fn16',N'ln16'),(3,1,N'fn17',N'ln17'),(3,1,N'fn18',N'ln18')

go
create view ViewDepInfo
AS
select 
	d.id_dep
	, d.depname
	, d.dep_emp_limit
	, ISNULL(oa.emp_in_dep_cnt,0) as emp_in_dep_cnt
	, d.dep_emp_limit-ISNULL(oa.emp_in_dep_cnt,0) as dep_emp_free 
from Dep d outer apply (select count(*) from Emp e where e.id_dep=d.id_dep)oa(emp_in_dep_cnt)
go

select * from ViewDepInfo

go
drop view ViewDepInfo
drop table Emp
drop table Dep

можете объяснить принцип работы этого?
24 мар 17, 19:02    [20330779]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
iiyama
Member

Откуда:
Сообщений: 642
fantanol,

У Вас в отделе наверняка хранится максимальное кол-во сотрудников, а не их текущее кол-во. Я предлагаю создать вам представление, которое будет выводить это кол-во, кол-во сотрудников в отделе и их разницу
24 мар 17, 19:28    [20330836]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
iiyama
fantanol,

У Вас в отделе наверняка хранится максимальное кол-во сотрудников, а не их текущее кол-во. Я предлагаю создать вам представление, которое будет выводить это кол-во, кол-во сотрудников в отделе и их разницу

А что с чем соединять,чтобы выводило?
24 мар 17, 19:44    [20330869]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
fantanol
iiyama
fantanol,

У Вас в отделе наверняка хранится максимальное кол-во сотрудников, а не их текущее кол-во. Я предлагаю создать вам представление, которое будет выводить это кол-во, кол-во сотрудников в отделе и их разницу

А что с чем соединять,чтобы выводило?


КО говорит, что отдел и сотрудников.
25 мар 17, 16:53    [20332185]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
Немного переделал таблицы.
При заполнении таблицы "Сотрудник" и выборе должности в ней. В таблице "Штатное расписание",должно уменьшаться "количество сотрудников". Можете подсказать примерный код всего этого действия? Спасибо

К сообщению приложен файл. Размер - 14Kb
25 мар 17, 22:42    [20332801]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
fantanol,

Присмотритесь к варианту который вам предложили с вьюшкой..
Если необходимо именно производить изменение кол-ва, то скорей всего триггер либо реализация на вашем клиенте.

Если триггер, то примерно так:
CREATE TRIGGER [dbo].[insActionСотрудник] ON [dbo].[Сотрудник] 
FOR INSERT
AS

UPDATE [Штатное расписание] SET [количество_сотрудников]=[количество_сотрудников]-isnull((select count(*) FROM INSERTED WHERE INSERTED.id_должность=[Штатное расписание].id_должность),0)


Примерно тоже самое я думаю нужно сделать при увольнении сотрудника. Ну и скорей всего должности у вас будут привязаны к отделам в штатном расписании.
27 мар 17, 06:43    [20335311]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
mr.dfox,

Еще наверно к update добавить условие )
where exists (select * from INSERTED where tempStat.id_dolzh =INSERTED.id_dolzh)
27 мар 17, 06:52    [20335324]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
iiyama
Member

Откуда:
Сообщений: 642
fantanol,

Я не специалист по кадровому администрированию, но лично меня Ваша структура штатного расписания удивляет.
Я еще не встречал организации, в которой каждый сотрудник имеет разную должность, хотя может для ИП и подходит.
Если у Вас опечатка и в ПК входит и отдел, то все равно в отделах обычно встречаются сотрудники с одинаковой должностью.
Кроме того, в случае если человек переводится с одной должности на другую, то Вам придется изменять ПК, а это у меня вызывает стойкое неприятие (ИМХО).

У Вас уже 2 схемы => Думаю Вам лучше сначала правильно спроектировать БД, а потом писать запросы.
27 мар 17, 10:06    [20335763]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
iiyama
fantanol,

Я не специалист по кадровому администрированию, но лично меня Ваша структура штатного расписания удивляет.
Я еще не встречал организации, в которой каждый сотрудник имеет разную должность, хотя может для ИП и подходит.
Если у Вас опечатка и в ПК входит и отдел, то все равно в отделах обычно встречаются сотрудники с одинаковой должностью.
Кроме того, в случае если человек переводится с одной должности на другую, то Вам придется изменять ПК, а это у меня вызывает стойкое неприятие (ИМХО).

У Вас уже 2 схемы => Думаю Вам лучше сначала правильно спроектировать БД, а потом писать запросы.

У меня сотрудник имеет только одну должность.
27 мар 17, 13:56    [20336927]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
Возможно я и не правильно составил расписание. Но вот чего я хочу добиться: В отделе имеется несколько разных должностей определенного количества. При выборе должности в таблице сотрудник,количество свободных должностей должно уменьшаться. Как-то так
27 мар 17, 13:58    [20336936]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
buven
Member

Откуда:
Сообщений: 792
fantanol
За кинотеатр - 8


Мои поздравления! Очень надеюсь что преподаватель нашел время объяснить почему не 10.

По сабжу.

Возьмите штатное расписание 2-х отделов:
Продажи:
Начальник отдела - 1 штатная единица (ше)
Главный специалист - 2 ше
Ведущий специалист - 8 ше
Специалист - 20 ше
Бухгалтерия:
Начальник отдела - 1 штатная единица (ше)
Главный специалист - 1 ше
Ведущий специалист - 2 ше
Специалист - 5 ше

И подумайте, есть ли смысл хранить в базе параметр - сколько мест осталось в отделе.
Может проще на клиенте, где это реально смотрят, считать сразу на лету количество народу в отделе и вычитать из штатного расписания... Которое, кстати говоря, тоже может меняться.
27 мар 17, 15:21    [20337388]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
buven
=

И подумайте, есть ли смысл хранить в базе параметр - сколько мест осталось в отделе.
Может проще на клиенте, где это реально смотрят, считать сразу на лету количество народу в отделе и вычитать из штатного расписания... Которое, кстати говоря, тоже может меняться.

Я бы мог это и не делать. Только тогда моя программа вообще пустышкой будет.
27 мар 17, 16:21    [20337713]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
buven
Member

Откуда:
Сообщений: 792
fantanol,

Вы пытаетесь устроить ад поддержке.
Вводите сущность, за которой будете следить из двух других мест:
1) Место где изменяется штатка.
2) Место где идет прием на работу - привязка конкретного человека к штатной единице.
С увеличением масштабов системы мест таких будет только прибавляться. Потом поди пойми почему остаток неверный.

Возвращаясь к постановке
fantanol
Я бы мог это и не делать. Только тогда моя программа вообще пустышкой будет.

Вы что называете программой?
Ваша задача реализовать часть БД или и клиента к ней до кучи?

Тем самым наполнением может быть view, как предложил iiyama.
27 мар 17, 16:36    [20337810]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
fantanol
Member

Откуда:
Сообщений: 191
buven
Вы что называете программой?
Ваша задача реализовать часть БД или и клиента к ней до кучи?

Тем самым наполнением может быть view, как предложил iiyama.


Бд отдела кадров. С последующим подключением ее к формам на visual basic

К сообщению приложен файл. Размер - 42Kb
27 мар 17, 18:01    [20338126]     Ответить | Цитировать Сообщить модератору
 Re: Таблицы  [new]
buven
Member

Откуда:
Сообщений: 792
fantanol,

Формы будете вы делать или напарник?

По схеме ничего наверно не буду писать, все вылезет в процессе.

Если религия и преподаватель позволяют завернуть бизнес логику в БД и ваша часть чисто БД-шная то можно попробовать заполнить пустоту следующим:
1) Хранимая процедура (ХП) заведения\редактирования сотрудника
2) ХП добавления\редактирования родственников сотрудника
3) ХП добавления\редактирования квалификации сотрудника
4) ХП добавления\редактирования аттестации сотрудника
5) ХП добавления\редактирования Отдела
6) ХП добавления\редактирования записей в штатном расписании
7) ХП закрепления сотрудника за должностью
8) ХП перевода сотрудника с одной должности на другую
9) ХП увольнения сотрудника
10) View как советовал iiyama, чтобы показывать наполнение компании.
11) View поднятия всей информации по сотруднику
12) View карьеры сотрудника
... дальше обсуждайте с напарником, что еще нужно
N) Задокументировать все дело хорошенько.

Напарнику останется запилить формы, с которых он будет собирать параметры и дергать ваши ХП.

Что-то больше идей нет, как заполнить пустоту... или что там преподаватель имел ввиду...

Это курсовая? Какой курс? Тоже может быть важно.
27 мар 17, 20:11    [20338347]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить