• Sonuç bulunamadı

MT487_2005guz_final_cevaplar (cevaplar vurgulu ve koyu yazılmıştır)

N/A
N/A
Protected

Academic year: 2022

Share "MT487_2005guz_final_cevaplar (cevaplar vurgulu ve koyu yazılmıştır)"

Copied!
5
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

MT 487 Bilgisayarda Veri Yapıları 2005-06 Güz Yarıyıl Sonu Sınavı

20.01.2006 Öğrenci No:

Ad Soyad:

İmza:

AÇIKLAMALAR

Cevaplar toplam 60 puan üzerinden değerlendirilecektir. Her soru 4 puandır.

Soruları aşağıda verilen OtoKira veritabanını ve bu veritabanına ait dosyaları kullanarak cevaplandırınız.

TABLOLAR

KiralananYer Araç

Kolon adı Tip Kısıtlama SatışYerNo int

IDENTITY(1,1) Adres varchar(255) Not null Telefon varchar(20) Not null

Kolon adı Tip Kısıtlama AraçPlakaNo varchar(10)

Marka varchar(15) Not null Model varchar(15) Not null Renk varchar(15) KişiSayısı smallint Not null KiraBedeli money Not null SatışYerNo int

KiralananYer

Müşteri Kiralama Kolon adı Tip Kısıtlama

MüşteriNo int

IDENTITY(1,1) Ad varchar(20) Not null Soyad varchar(20) Not null Adres varchar(255) Not null Telefon varchar(10) Not null

Kolon adı Tip Kısıtlama KiraNo int

IDENTITY(1,1) KiraBaşlangıçGün smalldatetime Not null TeslimEdilenGün smalldatetime DEFAULT(0) MüşteriNo int

Müşteri AraçPlakaNo varchar(10)

Araç

Tabloların birincil anahtarları ve Identity olup olmadıkları, kısıtlamalarda açıklanmıştır. Ayrıca bir tablonun bir başka tablo ile ilişkisi, yabancı anahtar açıklaması ile belirtilmiştir. Örneğin, Araç tablosu ile KiralananYer tablosu, SatışYerNo kolonu ile ilişkilendirilmiştir.

KiraBedeli kolonununda yazılan değer günlük kira bedelidir. Kiralar günlük hesaplandığından bir aracın aynı gün içinde iki defa kiralanmadığı varsayılmaktadır.

Bu nedenle (KiraBaşlangıçGün, MüşteriNo, AraçPlakaNo) üçlüsü Araç tablosunda her satırı tek türlü belirlemektedir.

SQL Server da bir smalldatetime kolonu 0 ise bu değer tarih formatına çevrilince 01.01.1900 tarihine dönüşmektedir. O halde bir araç kiralanmış ve henüz geri getirilmemiş ise TeslimEdilenGün = 0 veya TeslimEdilenGün = '01.01.1900' dır.

O halde TeslimEdilenGün <> 0 veya TeslimEdilenGün <> '01.01.1900' ise araç TeslimEdilenGün kolonunda yazılan günde teslim edilmiştir.

Bu bilgiler ışığında aşağıdaki sorulara cevap veriniz.

(2)

1. Araçların tüm bilgilerini ve bağlı oldukları kiralama noktasının adres ve telefonunu içeren tam listesini veren aşağıdaki SQL deyimini tamamlayınız.

SELECT A.AraçPlakaNo, A.Marka, A.Model, A.Renk, K.Adres, A.KişiSayısı, A.KiraBedeli, K.Telefon

FROM Araç A INNER JOIN

KiralananYer K ON A.SatışYerNo = K.SatışYerNo

2. Henüz geri getirilmeyen araçların, kiralayan müşteri ile birlikte listesini veren aşağıdaki SQL deyimini tamamlayınız.

SELECT A.AraçPlakaNo, A.Marka, A.Model, M.Ad, M.Soyad, M.Telefon, K.KiraBaşlangıçGün

FROM Araç A INNER JOIN

Kiralama K ON A.AraçPlakaNo = K.AraçPlakaNo INNER JOIN Müşteri M ON K.MüşteriNo = M.MüşteriNo

WHERE ( K.TeslimEdilenGün = 0)

3. '03.13.2005' tarihinde kiraya verilen ve halen kirada olan araçların plaka numaraları ile modellerinin listesini veren aşağıdaki SQL deyimini tamamlayınız.

SELECT A.AraçPlakaNo, A.Model FROM Araç A INNER JOIN

Kiralama K ON A.AraçPlakaNo = K.AraçPlakaNo WHERE ( K.KiraBaşlangıçGün = '03.13.2005' ) AND ( K.TeslimEdilenGün = 0 )

4. '03.13.2005' tarihinde 2842 numaralı müşteriye kiralanan '01XX333' nolu aracın kiralandığını belirten bilgileri Kiralama tablosuna giren SQL deyimini yazınız.

INSERT INTO Kiralama

( KiraBaşlangıçGün, MüşteriNo, AraçPlakaNo ) VALUES ( '03.13.2005', 2842, '01XX333' )

(3)

5. 41 numaralı müşterinin '03.23.2005' tarihinde kiraladığı '34XX222' plaka numaralı araç '03.25.2005' tarihinde teslim edildiğine göre Kiralama tablosunu güncelleyen SQL deyimini yazınız.

UPDATE Kiralama

SET TeslimEdilenGün = '03.25.2005' WHERE ( MüşteriNo = 41 ) AND ( KiraBaşlangıçGün = '03.23.2005' ) AND ( AraçPlakaNo = '34XX222' )

6. Kiralama tablosunda, KiraNo = 5 olarak numaralandırılmış satırda bulunan araç teslim edildiğine göre müşterinin ödeyeceği ücreti belirleyen SQL deyimini yazınız.

SELECT

DATEDIFF(day, K.KiraBaşlangıçGün, K.TeslimEdilenGün ) * A.KiraBedeli AS Ücret FROM Kiralama K INNER JOIN

Araç A

ON K.AraçPlakaNo = A.AraçPlakaNo WHERE ( K.KiraNo = 5 )

7. Kiralama tablosunda KiraNo = 6 olarak numaralandırılmış satırda bulunan aracın iade edildiği gün '03.24.2005' olduğuna göre Kiralama tablosunu güncelleyen SQL deyimini yazınız.

UPDATE Kiralama

SET TeslimEdilenGün = '03.24.2005' WHERE ( KiraNo = 6 )

8. En genel olarak Kiralama tablosunda @KiraNo numarası ile numaralandırılmış satırda bulunan aracın iade edildiği gün @TeslimEdilenGün olduğuna göre Kiralama tablosunu güncelleyen sx_Kiralama_Güncelle_2 saklı yordamını yazınız.

CREATE PROCEDURE sx_Kiralama_Güncelle_2 @KiraNo int,

@TeslimEdilenGün smalldatetime

(4)

AS

UPDATE Kiralama

SET TeslimEdilenGün = @TeslimEdilenGün WHERE ( KiraNo = @KiraNo )

9. Halen kirada olan tüm araçların listesini veren v_Kirada isimli VIEW yazınız.

CREATE VIEW v_Kirada AS

SELECT KiraNo, KiraBaşlangıçGün, AraçPlakaNo, MüşteriNo FROM Kiralama

WHERE ( TeslimEdilenGün = 0 )

10. Kirada olmayan araçların plaka no, model ve marka bilgilerini veren v_KiradaDegil isimli VIEW yazınız.

CREATE VIEW v_KiradaDegil AS

SELECT A.AraçPlakaNo, A.Marka, A.Model FROM Araç A LEFT OUTER JOIN

Kiralama K ON A.AraçPlakaNo = K.AraçPlakaNo WHERE ( K.AraçPlakaNo IS NULL)

UNION

SELECT A.AraçPlakaNo, A.Marka, A.Model FROM Araç A INNER JOIN

Kiralama K ON A.AraçPlakaNo = K.AraçPlakaNo WHERE ( K.TeslimEdilenGün >0)

11. Arabaların birbirinden farklı renklerini veren bir SQL deyimi yazınız.

SELECT DISTINCT Renk FROM Araç

12. Markası Renault ve modeli Scenic olan araçların bulundukları yerlere göre sayısını listeleyen bir SQL deyimi yazınız.

SELECT COUNT( AraçPlakaNo ) AS AraçSay, SatışYerNo FROM Araç

(5)

WHERE ( Marka = 'Renault' ) AND ( Model = 'Scenic' )

GROUP BY SatışYerNo

13. Yeni araç alımında bunu araç tablosuna ekleyen aşağıdaki sx_Araç_Gir isimli saklı yordamı tamamlayınız.

CREATE PROCEDURE sx_Araç_Gir @AraçPlakaNo varchar(10), @Marka varchar(15),

@Model varchar(15), @Renk varchar(15), @KişiSayısı smallint, @KiraBedeli money, @SatışYerNo int

AS

INSERT INTO Araç (AraçPlakaNo, Marka, Model, Renk, KişiSayısı, KiraBedeli, SatışYerNo)

VALUES (

@AraçPlakaNo, @Marka, @Model,

@Renk, @KişiSayısı, @KiraBedeli,

@SatışYerNo )

14. Yeni alınan ‘Mavi’ renkli, markası ‘Ford’, modeli ‘Focus’ olan 4 kişilik, ‘01DD555’

plaka numaralı araç kira bedeli 40 YTL olmak üzere, 6 numaralı satış yerine verildiğine göre bu bilgiyi sx_Araç_Gir yordamı ile Araç tablosuna ekleyen bir SQL deyimi yazınız.

EXECUTE sx_Araç_Gir ‘01DD555’,

‘Ford’, ‘Focus’, ‘Mavi’, 4, 40, 6

15. Kaç farklı müşteri araba kiralamıştır sorusunun cevabını veren bir SQL deyimi yazınız (Not: aracın teslim edilip edilmemesi önemli değil, kiralama işinin yapılmış olması yeterli).

SELECT COUNT(DISTINCT MüşteriNo ) AS SAY FROM Kiralama

Referanslar

Benzer Belgeler

3 - Kiracı firma kira bedellerini gider olarak gösterebildiğinden, fi- nansal kiralama yatırım mallarını satın almaya göre vergi yönünden daha

Sınırlı denetimimize göre, iliĢikteki ara dönem finansal bilgilerin, Halk Finansal Kiralama Aġ’nin 30 Eylül 2015 tarihi itibarıyla finansal durumunun ve aynı tarihte sona

Görüşümüze göre finansal tablolar, Halk Finansal Kiralama Anonim Şirketi’nin 31 Aralık 2016 tarihi itibarıyla finansal durumunu ve aynı tarihte sona eren

Aracın KİRACI’nın kusuru ile arızalanması,KİRACI’NIN kusuru ile olsun veya olmasın KİRACI’nın uhdesinde iken kazaya karışması/çalın- ması/müsadere altına

Bu çeşit fesih halinde MÜŞTERİ, sözleşme konusu araçları derhal FİLOSİS e iade edecek ve yine 12.b maddesindeki şekilde sözleşmenin fesih tarihten itibaren araç

EPC, Lojistik, Ekipman Kiralama, Ağır Kaldırma, Nakliye ve

• 2018 yıl sonu itibariyle Şeker Finansal Kiralama’nın leasing alacakları 2017 yıl sonuna göre. %4.8 artışla 448,7 milyon

Sisteme ilk giriş bedeli 531.-TL (KDV dahil) olup, bu bedel 100 müşteri hesabını kapsamaktadır. Bu bedel www.luca.com.tr web sayfasında beyan edilen