Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Oracle helpdesk database shema
1. Veri Modelleme ve Iliskisel
Veritabanlari Dersi
Proje Dökümanı
Murat Gülci
Bu projede bir Helpdesk database’i tasarlandı ve
oluşturuldu. Kullanıcıların takibi, problemlerin ve problemin
geçmişinin takibi, envanter takibi ve Bilgi işlem
çalışanlarının yeteneklerinin takibi yapılabilmesi
sağlandı.Hazırlanan bütün sorgular, karşılaşılabilinecek
gerçek senaryolar düşünülerek hazırlandı.
Bahceşehir Üniversitesi
BEŞİKTAŞ
ALPER TUNGA
Veritabanı ve İlişkisel
Veritabanları
YZM5507
7. Query Result
ALTER TABLE "RESOLUTIONS" ADD CONSTRAINT
"RESOLUTIONS_FK" FOREIGN KEY ("PROBLEM_HISTORY_ID")
REFERENCES "PROBLEM_HISTORY"
("PROBLEM_HISTORY_ID") ENABLE;
Query Result
ALTER TABLE "USERS" ADD CONSTRAINT "USERS_FK" FOREIGN
KEY ("USER_TYPE_CODE")
REFERENCES "REF_USER_TYPES"
("USER_TYPE_CODE") ENABLE;
8. 4. Select Sorgular
a. En Sorunlu ürünler
Query
Select
REF_EQUIPMENT_TYPES.EQUIPMENT_TYPE_DESCRIPTION,
EQUIPMENT.EQUIPMENT_TYPE_CODE,
EQUIPMENT.EQUIPMENT_NAME,
EQUIPMENT.EQUIPMENT_DESCRIPTION,
PROBLEMS.EQUIPMENT_ID As EQUIPMENT_ID1,
Count(PROBLEMS.EQUIPMENT_ID) as "Problem Sayısı"
From
EQUIPMENT Inner Join
REF_EQUIPMENT_TYPES On EQUIPMENT.EQUIPMENT_TYPE_CODE =
REF_EQUIPMENT_TYPES.EQUIPMENT_TYPE_CODE Inner Join
PROBLEMS On PROBLEMS.EQUIPMENT_ID = EQUIPMENT.EQUIPMENT_ID
Where
PROBLEMS.EQUIPMENT_ID = EQUIPMENT.EQUIPMENT_ID
Group By
REF_EQUIPMENT_TYPES.EQUIPMENT_TYPE_DESCRIPTION, EQUIPMENT.EQUIPMENT_TYPE_CODE,
EQUIPMENT.EQUIPMENT_NAME, EQUIPMENT.EQUIPMENT_DESCRIPTION,
PROBLEMS.EQUIPMENT_ID
Order By
Count(PROBLEMS.EQUIPMENT_ID) Desc
Query 2:
select EQUIPMENT_ID, count(EQUIPMENT_ID)
from problems
group by EQUIPMENT_ID
having count(EQUIPMENT_ID)>1
order by count(EQUIPMENT_ID) desc
Result
Result 2
9. b. En çok sorun çözen IT elemanları
Query
Select
SUPPORT_STAFF.STAFF_ID,
SUPPORT_STAFF.STAFF_NAME,
SUPPORT_STAFF.STAFF_EMAIL,
REF_SKILL_CODES.SKILL_DESCRIPTION,
Count(PROBLEM_HISTORY.ASSIGNED_STAFF_ID) as "Sorun Sayısı"
From
PROBLEM_HISTORY Inner Join
SUPPORT_STAFF On PROBLEM_HISTORY.ASSIGNED_STAFF_ID = SUPPORT_STAFF.STAFF_ID
Inner Join
STAFF_SKILLS On STAFF_SKILLS.STAFF_ID = SUPPORT_STAFF.STAFF_ID Inner Join
REF_SKILL_CODES On STAFF_SKILLS.SKILL_CODE = REF_SKILL_CODES.SKILL_CODE
Group By
SUPPORT_STAFF.STAFF_ID, SUPPORT_STAFF.STAFF_NAME, SUPPORT_STAFF.STAFF_EMAIL,
REF_SKILL_CODES.SKILL_DESCRIPTION
Order By
Count(PROBLEM_HISTORY.ASSIGNED_STAFF_ID) Desc
Result
c. En sorunlu Kullanıcılar
Query
Select
USERS.USER_ID,
USERS.USER_FIRST_NAME,
USERS.USER_LAST_NAME,
USERS.USER_EMAIL,
REF_USER_TYPES.USER_TYPE_DESCRIPTION,
Count(PROBLEMS.USER_ID) As Problem_Count
From
PROBLEMS Inner Join
USERS On PROBLEMS.USER_ID = USERS.USER_ID Inner Join
REF_USER_TYPES On USERS.USER_TYPE_CODE = REF_USER_TYPES.USER_TYPE_CODE
Group By
USERS.USER_ID, USERS.USER_FIRST_NAME, USERS.USER_LAST_NAME, USERS.USER_EMAIL,
REF_USER_TYPES.USER_TYPE_DESCRIPTION
Order By
Count(PROBLEMS.USER_ID) Desc
Result
10. d. Açık Çağrılar Listesi
Query
Select
PROBLEM_HISTORY.PROBLEM_HISTORY_ID,
REF_PRIORITY_LEVELS.PRIORITY_LEVEL_DESCRIPTION,
SUPPORT_STAFF.STAFF_NAME,
PROBLEMS.PROBLEM_DESCRIPTION,
PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION,
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_DESCRIPTION
From
PROBLEM_HISTORY Inner Join
REF_PROBLEM_STATUS_CODE On PROBLEM_HISTORY.PROBLEM_STATUS_CODE =
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_CODE Inner Join
SUPPORT_STAFF On PROBLEM_HISTORY.ASSIGNED_STAFF_ID = SUPPORT_STAFF.STAFF_ID
Inner Join
REF_PRIORITY_LEVELS On PROBLEM_HISTORY.PRIORITY_LEVEL_CODE =
REF_PRIORITY_LEVELS.PROBLEM_LEVEL_CODE Inner Join
PROBLEMS On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID
Where
PROBLEM_HISTORY.PROBLEM_STATUS_CODE = 803
Result
e. SLA süresinde çözülmeyen işler
Query
Select
PROBLEMS.PROBLEM_ID,
PROBLEMS.PROBLEM_REPORTED_DATETIME,
PROBLEM_HISTORY.FIX_DATETIME,
USERS.USER_FIRST_NAME,
USERS.USER_LAST_NAME,
PROBLEMS.PROBLEM_DESCRIPTION,
REF_PRIORITY_LEVELS.PRIORITY_LEVEL_DESCRIPTION
From
PROBLEMS Inner Join
PROBLEM_HISTORY On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID Inner Join
REF_PRIORITY_LEVELS On PROBLEM_HISTORY.PRIORITY_LEVEL_CODE =
REF_PRIORITY_LEVELS.PROBLEM_LEVEL_CODE Inner Join
USERS On PROBLEMS.USER_ID = USERS.USER_ID
Where
PROBLEM_HISTORY.FIX_DATETIME > PROBLEMS.PROBLEM_REPORTED_DATETIME
Result
11. f. 40000000007 no’lu problemin geçmiş detayı
Query
Select
PROBLEMS.PROBLEM_ID,
PROBLEMS.PROBLEM_DESCRIPTION,
REF_PRIORITY_LEVELS.PRIORITY_LEVEL_DESCRIPTION,
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_DESCRIPTION,
PROBLEM_HISTORY.FIX_DATETIME,
SUPPORT_STAFF.STAFF_NAME,
PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION
From
PROBLEMS Inner Join
PROBLEM_HISTORY On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID Inner Join
REF_PROBLEM_STATUS_CODE On PROBLEM_HISTORY.PROBLEM_STATUS_CODE =
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_CODE Inner Join
REF_PRIORITY_LEVELS On PROBLEM_HISTORY.PRIORITY_LEVEL_CODE =
REF_PRIORITY_LEVELS.PROBLEM_LEVEL_CODE Inner Join
SUPPORT_STAFF On PROBLEM_HISTORY.ASSIGNED_STAFF_ID = SUPPORT_STAFF.STAFF_ID
Where
PROBLEMS.PROBLEM_ID = 4000000007
Result
g. Ahmet Kullanıcısının Çağrılarının detayları
Query
Select
USERS.USER_FIRST_NAME,
USERS.USER_LAST_NAME,
PROBLEMS.PROBLEM_DESCRIPTION,
PROBLEM_HISTORY.FIX_DATETIME,
PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION,
REF_PRIORITY_LEVELS.PRIORITY_LEVEL_DESCRIPTION
From
USERS Inner Join
PROBLEMS On PROBLEMS.USER_ID = USERS.USER_ID Inner Join
PROBLEM_HISTORY On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID Inner Join
REF_PRIORITY_LEVELS On PROBLEM_HISTORY.PRIORITY_LEVEL_CODE =
REF_PRIORITY_LEVELS.PROBLEM_LEVEL_CODE
Where
USERS.USER_FIRST_NAME = 'Ahmet'
Query_2
select
PROBLEM_ID, PROBLEM_DESCRIPTION
from
problems p, users u
where
p.user_id = u.user_id and u.user_first_name like 'Ahme%'
Result
Result2
12. h. Geçen Seneki çağrıların toplamı
Query
Select
Count(Distinct PROBLEM_HISTORY.PROBLEM_ID) as "2011 Çağrı Adedi"
From
PROBLEMS Inner Join
PROBLEM_HISTORY On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID
Where
Extract(Year From PROBLEM_HISTORY.FIX_DATETIME) = 2011
Result
i. Atanmamış çağrılar
Query
Select
EQUIPMENT.EQUIPMENT_NAME,
USERS.USER_FIRST_NAME,
USERS.USER_LAST_NAME,
PROBLEMS.PROBLEM_REPORTED_DATETIME,
PROBLEMS.PROBLEM_DESCRIPTION
From
PROBLEMS Inner Join
EQUIPMENT On PROBLEMS.EQUIPMENT_ID = EQUIPMENT.EQUIPMENT_ID Inner Join
USERS On PROBLEMS.USER_ID = USERS.USER_ID
Where
PROBLEMS.PROBLEM_ID Not In (Select Distinct
(PROBLEM_HISTORY.PROBLEM_ID)
From
PROBLEM_HISTORY)
Result
13. j. Kapatılan Çağrılar
Query
Select
PROBLEMS.PROBLEM_ID,
USERS.USER_FIRST_NAME,
USERS.USER_LAST_NAME,
EQUIPMENT.EQUIPMENT_NAME,
REF_EQUIPMENT_TYPES.EQUIPMENT_TYPE_DESCRIPTION,
PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION
From
PROBLEMS Inner Join
PROBLEM_HISTORY On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID Inner Join
USERS On PROBLEMS.USER_ID = USERS.USER_ID Inner Join
EQUIPMENT On PROBLEMS.EQUIPMENT_ID = EQUIPMENT.EQUIPMENT_ID Inner Join
REF_EQUIPMENT_TYPES On EQUIPMENT.EQUIPMENT_TYPE_CODE =
REF_EQUIPMENT_TYPES.EQUIPMENT_TYPE_CODE
Where
PROBLEM_HISTORY.PROBLEM_STATUS_CODE = 804
Result
k. Zor seviyesindeki çağrıların detay durumu
Query
Select
PROBLEMS.PROBLEM_ID,
USERS.USER_FIRST_NAME,
USERS.USER_LAST_NAME,
PROBLEMS.PROBLEM_DESCRIPTION,
PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION,
SUPPORT_STAFF.STAFF_NAME
From
PROBLEM_HISTORY Inner Join
PROBLEMS On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID Inner Join
USERS On PROBLEMS.USER_ID = USERS.USER_ID Inner Join
SUPPORT_STAFF On PROBLEM_HISTORY.ASSIGNED_STAFF_ID = SUPPORT_STAFF.STAFF_ID
Where
PROBLEM_HISTORY.PRIORITY_LEVEL_CODE = 703
Result
14. l. Problem çözümü girilmiş problemlerin listesi
Query
Select Distinct
PROBLEM_HISTORY.PROBLEM_ID
From
PROBLEM_HISTORY
Order By
PROBLEM_HISTORY.PROBLEM_ID
Result
15. 5. Update sorguları
a. Açık çağrıların kapatılması
Query
update problem_history
set problem_status_code =
(select problem_status_code
from ref_problem_status_code
where problem_status_description='kapandı')
where
problem_status_code in
(select p.problem_status_code
from problem_history p, ref_problem_status_code s
where problem_status_description='açık' and
s.problem_status_code=p.problem_status_code)
Result
16. b. Çözüm girilen çağrıların kapatılması
Query
update problem_history
set problem_status_code =
(select problem_status_code
from ref_problem_status_code
where problem_status_description='kapandı')
where
problem_status_code in
(select h.problem_status_code
from problem_history h, resolutions r
where r.problem_history_id=h.problem_history_id)
Result
c. Support Elemanına skill ekleme ve tarihi güncelleme
Query
INSERT INTO ref_skill_codes VALUES (3006,'Senior Programmer');
update staff_skills
set (skill_code, date_skill_obtained) =
(select skill_code, to_date(sysdate, 'dd/mm/yyyy' )
from ref_skill_codes
where skill_description='Senior Programmer' )
where
skill_code =
(select st.skill_code
from staff_skills st, support_staff su
where st.staff_id=su.staff_id and su.staff_name='Murat');
Result
17. d. User’ın type’ı değişmesi(müdür olması)
Query
INSERT INTO ref_user_types VALUES (6000000006,'Muhasebe Müdürü')
update users
set USER_TYPE_CODE =
( select user_type_code from ref_user_types where
USER_TYPE_DESCRIPTION = 'Muhasebe Müdürü')
where
USER_TYPE_CODE =
(select USER_TYPE_CODE
from users
where user_id='30003' and user_first_name='Eyüp')
Result
1 row(s) updated. 0.00 seconds
select u.user_first_name, ru.USER_TYPE_DESCRIPTION
from users u, ref_user_types ru
where u.user_id='30003' and u.user_type_code=ru.user_type_code;
e. Prblem açıklaması değiştirilmesi
Query
update problems
set PROBLEM_DESCRIPTION = 'Yazıcıya yazdırırken yazdırılamadı şeklinde
hata veriyor. dün çalışıyordu,sorun yoktu'
where
problem_id = '4000000001'
Result
1 row(s) updated. 0.02 seconds
select problem_id, PROBLEM_DESCRIPTION from problems where problem_id='4000000001'
18. f. equipment_code(seri no) değiştirilmesi
Query
update EQUIPMENT
set EQUIPMENT_CODE = '2000000006'
where
EQUIPMENT_CODE = '2000000005' and EQUIPMENT_ID = '1000000005'
Result
1 row(s) updated. 0.03 seconds
select EQUIPMENT_ID, EQUIPMENT_CODE from EQUIPMENT where EQUIPMENT_ID =
'1000000005'
g. Support elemanlarına yeni sorun atanması
Query
select p.problem_id
from problems p
where p.problem_id not in (select problem_id from problem_history)
INSERT INTO problem_history VALUES
(5000000011,701,
(select p.problem_id from problems p where p.problem_id not in
(select problem_id from problem_history)),
802,1002, TO_DATE ('06/06/2011', 'dd/mm/yyyy'),'xc')
Result
1 row(s) inserted. 0.06 seconds
select p.problem_id from problems p where p.problem_id not in (select problem_id
from problem_history)
no data found
19. h. equipment silinmesi
Query
ALTER TABLE "PROBLEMS" disable CONSTRAINT "PROBLEMS_FK"
Table altered. 0.03 seconds
delete
from equipment
where EQUIPMENT_ID='1000000002'
Result
1 row(s) deleted. 0.01 seconds
i. user silinmesi
Query
ALTER TABLE "PROBLEMS" disable CONSTRAINT "PROBLEMS_CON"
Table altered. 0.08 seconds
delete
from users
where user_first_name='Ayşe' and user_last_name='Cebeci' and
user_id='30005'
Result
1 row(s) deleted. 0.01 seconds
j. Problem History Kaydı silinmesi
Query
delete
from problem_history
where PROBLEM_HISTORY_ID= '5000000006'
Result
1 row(s) deleted. 0.01 seconds
20. k. Support Stuff silinmesi
Query
delete
from support_staff
where staff_id='1001' and staff_name = 'Mustafa'
Result
1 row(s) deleted. 0.01 seconds
l. Sorun İstatistikleri
Query
select
min(count(p.ASSIGNED_STAFF_ID)) as "En az Sorunla İlgilenen",
max(count(p.ASSIGNED_STAFF_ID)) as "En Fazla Sorunla İlgilenen",
round(avg(count(p.ASSIGNED_STAFF_ID)),1) as "Ortama Sorunla İlgilenen"
from problem_history p
group by p.ASSIGNED_STAFF_ID
Result
21. m. Case kullanmak
Query
select
problem_history_id, PROBLEM_HISTORY_DESCRIPTION,
case
when ASSIGNED_STAFF_ID= '1001' then 'Mustafa ilgileniyor'
when ASSIGNED_STAFF_ID= '1002' then 'Dinçer ilgileniyor'
when ASSIGNED_STAFF_ID= '1003' then 'Şükrü ilgileniyor'
else 'Başkası ilgileniyor'
end as Kim_ilgileniyor
from problem_history
Result
22. 6. Extra Sorgular
a. Genel Bakış view oluşturma
Query
CREATE OR REPLACE VIEW genel_bakis
AS
Select
PROBLEM_HISTORY.PROBLEM_ID,
PROBLEM_HISTORY.PROBLEM_HISTORY_ID,
REF_PRIORITY_LEVELS.PRIORITY_LEVEL_DESCRIPTION,
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_DESCRIPTION,
SUPPORT_STAFF.STAFF_NAME,
PROBLEM_HISTORY.FIX_DATETIME,
PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION,
EQUIPMENT.EQUIPMENT_NAME,
USERS.USER_FIRST_NAME || ' ' || USERS.USER_LAST_NAME as Kullanıcı
From
PROBLEM_HISTORY Inner Join
REF_PROBLEM_STATUS_CODE On PROBLEM_HISTORY.PROBLEM_STATUS_CODE =
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_CODE Inner Join
REF_PRIORITY_LEVELS On PROBLEM_HISTORY.PRIORITY_LEVEL_CODE =
REF_PRIORITY_LEVELS.PROBLEM_LEVEL_CODE Inner Join
SUPPORT_STAFF On PROBLEM_HISTORY.ASSIGNED_STAFF_ID = SUPPORT_STAFF.STAFF_ID
Inner Join
PROBLEMS On PROBLEM_HISTORY.PROBLEM_ID = PROBLEMS.PROBLEM_ID Inner Join
EQUIPMENT On PROBLEMS.EQUIPMENT_ID = EQUIPMENT.EQUIPMENT_ID Inner Join
USERS On PROBLEMS.USER_ID = USERS.USER_ID
Group By
PROBLEM_HISTORY.PROBLEM_ID, PROBLEM_HISTORY.PROBLEM_HISTORY_ID,
REF_PRIORITY_LEVELS.PRIORITY_LEVEL_DESCRIPTION,
REF_PROBLEM_STATUS_CODE.PROBLEM_STATUS_DESCRIPTION, SUPPORT_STAFF.STAFF_NAME,
PROBLEM_HISTORY.FIX_DATETIME, PROBLEM_HISTORY.PROBLEM_HISTORY_DESCRIPTION,
EQUIPMENT.EQUIPMENT_NAME, USERS.USER_FIRST_NAME, USERS.USER_LAST_NAME
Order By
PROBLEM_HISTORY.PROBLEM_ID
Result
23. b. Index Oluşturma
Query
CREATE INDEX problem__id_index ON problem_history(problem_id);
Result
Index created.
c. Sequence Oluşturma
Query
CREATE SEQUENCE EQUIPMENT_ID
INCREMENT BY 1
Result
Sequence created.
d. Select ile yedek almak
Query
select * into problems_backup from problems
Result
7. Sonuçlar
Görev Beklenen Yapılan
table oluşturma 6-7 tablo 13 tablo
Select sorgusu 10 12
Update/delete sorgusu 10 10
İndex oluşturma 0 1
View oluşturma 0 1
Sequence oluşturma 0 1