-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFilmSitesiDatabaseScript.sql
More file actions
239 lines (205 loc) · 6.98 KB
/
FilmSitesiDatabaseScript.sql
File metadata and controls
239 lines (205 loc) · 6.98 KB
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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
use master
go
--veritabanı kontrolü
if exists (select * from sysdatabases where name ='Filmler-ve-Flimler')
begin
print 'aynı isimli bir veritabanı mecvut tablolar siliniyor'
drop database [Filmler-ve-Flimler]
end
go
create database [Filmler-ve-Flimler]
go
use master
declare @dosyaYolu nvarchar(max)
select @dosyaYolu= filename from master.dbo.sysaltfiles where dbid =1 and fileid=1
select @dosyaYolu=SUBSTRING(@dosyaYolu,0,CHARINDEX('master.mdf',@dosyaYolu))
print 'fiziksel database dosyanızın yolu => ' + @dosyaYolu+'filmler-ve-flimler.mdf'
go
SET DATEFORMAT mdy
go
--foreign key constraints
--=> alter table Ogrenciler
--=> add contraint [constraint_name] foreign key (column_name) references [2nd table](column in the 2nd table)
-- ==> on delete cascade
-- ==> on update cascade
--Tablolar
--default constraing eklenebilir
--ikinci versiyonda indexler eklenebilir
--cinsiyet bit => erkek=true - kadın=false
--------------------------------------------- Tablo Oluşturma ---------------------------------------------------------------------
use [Filmler-ve-Flimler]
go
Create Table Yonetmenler
(
YonetmenId int primary key identity(1,1) not null,
YonetmenAdi nvarchar(max) not null,
YonetmenSoyAdi nvarchar(max) not null,
YonetmenDogumTarihi datetime null
)
go
create table Filmler
(
FilmId int primary key identity(1,1) not null,
FilmAdi nvarchar(max) not null,
YayinlanmaTarih datetime null,
YonetmenId int not null, --fk yönetmenler tablosu
Constraint FK_Yonetmen_Id_Filmler foreign key(YonetmenId) references Yonetmenler(YonetmenId)
on delete cascade on update cascade
)
go
Create Table Kategoriler
(
KategoriId int primary key identity(1,1),
KategoriAdi nvarchar(max)
)
go
Create Table FilmTurleri
(
FilmId int not null, --fk
kategoriId int not null, --fk
constraint FK_FilmID_Turler foreign key (FilmId) references Filmler(FilmId)
on delete cascade on update cascade,
constraint FK_Kategoriler_Turler foreign key (kategoriId) references Kategoriler(KategoriId)
on delete cascade on update cascade
)
go
Create Table Kullanicilar
(
KullaniciId int primary key identity(1,1) not null,
UyelikAdi nvarchar(18) not null,
KullaniciSifre nvarchar(20) not null,
KullaniciTel nvarchar(11) not null,
KullaniciAd nvarchar(20) not null,
KullaniciSoyad nvarchar(20) not null,
Cinsiyet bit not null
)
go
Create Table Yorumlar
(
YorumId int primary key identity(1,1) not null,
KullaniciId int not null, --fk
FilmId int not null, --fk
YorumText nvarchar(300) not null,
YorumTarih datetime not null,
constraint FK_KullaniciId_Yorumlar foreign key (KullaniciId) references Kullanicilar(KullaniciId)
on delete cascade,
constraint FK_FilmID_Yorumlar foreign key (FilmId) references Filmler(FilmId)
on delete cascade
)
go
create Table Favoriler
(
KullaniciId int not null, --fk
FilmId int not null, --fk
KullaniciPuani int not null --check constraint (1-10)
Constraint DegerAraligi check (KullaniciPuani >= 1 and KullaniciPuani <= 10),
Constraint FK_KullaniciID_filmler foreign key (FilmId) references Filmler(FilmId)
on delete cascade,
Constraint FK_KullaniciId_favoriler foreign key (KullaniciId) references Kullanicilar(KullaniciId)
on delete cascade
)
go
Create Table Oyuncular
(
OyuncuId int primary key identity(1,1) not null ,
OyuncuAdi nvarchar(25) not null,
OyuncuSoyAdi nvarchar(25) not null,
OyuncuDogumTarihi datetime null,
OyuncuCinsiyet bit not null
)
go
Create Table OyuncuFilmografi
(
OyuncuId int not null, --fk
FilmId int not null, --fk
Karakteri nvarchar(35) null ,
Constraint FK_FilmId_Filmorgrafi foreign key (FilmId) references Filmler(FilmId)
on delete cascade,
Constraint FK_OyuncuId_Filmorgrafi foreign Key (OyuncuId) references Oyuncular(OyuncuId)
on delete cascade
)
------------------------------------------------- VİEWS -------------------------------------------------
go
create table YorumLog
(
ID int,
Yorum nvarchar(max),
OlusturmaTarihi datetime,
SilmeTarihi datetime
)
go
-------------------------------------------------VİEWS------------------------------------------------------------------------------
create view "Yonetmenler-ve-filmleri" as
select YonetmenAdi,FilmAdi from Filmler f inner join Yonetmenler y on y.YonetmenId=f.YonetmenId
go
create view "kullanıcının favorileri" as
select k.KullaniciAd,f.FilmAdi,fav.KullaniciPuani from Favoriler fav inner join
Kullanicilar k on k.KullaniciId = fav.KullaniciId
inner join Filmler f on f.FilmId=fav.FilmId
go
create view "Kullanici-Bilgisi" as
select k.UyelikAdi,k.KullaniciAd,k.KullaniciSoyad,k.Cinsiyet from Kullanicilar k
go
create view "kategori-fav-sayısı"
as
select k.KategoriAdi, COUNT(*) [sayısı]from Favoriler fv inner join Filmler f
on fv.FilmId = f.FilmId
inner join FilmTurleri ft
on ft.FilmId=f.FilmId
inner join Kategoriler k
on k.KategoriId=ft.kategoriId
group by k.KategoriAdi
go
create view "filmler ve kategroiler" as
select f.FilmAdi,k.KategoriAdi from FilmTurleri ft inner join Filmler f
on ft.FilmId=f.FilmId
inner join Kategoriler k
on ft.kategoriId=k.KategoriId
go
------------------------------------------------- STORED PROCEDURES -------------------------------------------------
go
create proc sp_KullanıcıGetir(@id int) as
select *from Kullanicilar where KullaniciId=@id
go
create proc sp_KullanıcıYorumSayisi(@id int, @count int output) as
select @count=COUNT(*) from Yorumlar where KullaniciId =@id
go
----örnek kullanım--------------------------
--declare @x int
--exec sp_KullanıcıYorumSayisi 1, @x output
--print @x
------------------------------------------
create proc sp_FilminKategorisi(@filmAdi nvarchar(max)) as
select k.KategoriAdi from FilmTurleri ft inner join kategoriler k
on k.KategoriId=ft.kategoriId
inner join Filmler f on f.FilmId=ft.FilmId
where f.FilmAdi = @filmAdi
go
------------örnek kullanım-----------------
--exec sp_FilminKategorisi 'eyes wide shut'
create proc sp_OyuncuFilmleriGetir(@ad nvarchar(max) , @soyad nvarchar(max)) as
select f.FilmAdi,o.OyuncuAdi,o.OyuncuSoyAdi, oyuncuflim.Karakteri from OyuncuFilmografi oyuncuflim inner join Oyuncular o
on oyuncuflim.OyuncuId =o.OyuncuId
inner join filmler f on f.FilmId =oyuncuflim.FilmId
where OyuncuAdi = @ad and OyuncuSoyAdi=@soyad
go
-------------örnek kullanım------------------
--exec sp_OyuncuFilmleriGetir 'orlando','bloom'
------------------------------------------------- Trigger ------------------------------------------------------------------------
--silinen yorumu yorumloglara eklemek
Create Trigger triggerYorumlar
on Yorumlar
after delete
as
declare @Id nvarchar(max), @yorum nvarchar(max),@Olusmatarih datetime
select @Id=KullaniciId,@yorum=YorumText,@Olusmatarih=YorumTarih from deleted
insert YorumLog Values(@Id,@yorum,@Olusmatarih,GETDATE())
go
--Yorum update edilirse yorumun eski halini yorum loglara eklemek
create Trigger YorumUpdate
on Yorumlar
for update
as
declare @Id nvarchar(max), @yorumEskiYorum nvarchar(max),@Olusmatarih datetime
select @Id=KullaniciId,@yorumEskiYorum =YorumText,@Olusmatarih=YorumTarih from deleted
insert YorumLog Values(@Id,@yorumEskiYorum+'##update##',@Olusmatarih,GETDATE())