Jaguar araçlarının yer aldığı bir veritabanı projesi yapmak istedim. Keyfi olarak yapmaya başladığım bu veritabanı projesinde şimdilik, yıl bazlı en az yakıt tüketen ve en performanslı Jaguar marka araçlar HTML tablosu olarak listeleniyor. Aklıma geldikçe, kullanımı kolay olmayan kod ve sorguları buraya eklemeye devam edeceğim. Sayfanın en sonunda, tüm kodları paylaştım. Fikir, öneri, eleştiri, istek vs için iletişim kısmından bana yazabilirsiniz.

Oracle Database Projesi kapsamında 6 tane tablo oluşturdum.
jaguar_modelleri : x-type, xj, xf vs gibi tüm modelleri ekledim.
kasa_tipi: sedan,suv, cabrio v.s. bilgileri ekledim.
yil: araçların, üretim başlangıç ve bitiş yılları olduğu için, joinlemede kullanmak amacı ile oluşturdum. Connect by level yapısını kullandım. Bu linkte benzer kullanımı mevcut
motor_sanzuman_secenegi: Merkez tablom bu. Aynı aracın farklı motor, farklı şanzıman hatta farklı çekiş türleri olduğu için burada hepsini üretim bitiş tarihi aralıkları ile ekledim. Her kasa tipinin kendine ait kaydı var.
m_s_id sütunu: id’leri sequence ile doldurdum. 2 farklı yöntemle yapılabilir. Burdan benzer örnek inceleyebilirsiniz.
kw sütunu: Bu tabloya veri girişi yapılırken, eğer KW değeri boş ise, hp bilgisi kullanılarak, fonksiyon yardımı ile kw değerini hesaplatıp, Trigger ile kw değerinin dolu olarak insert edilmesini sağladım. Örnek fonksiyon’u buradan inceleyebilirsiniz. Örnek trigger’ı buradan inceliyebilirsiniz.
resim: Jaguar araçlarının resimlerinin olduğu path (web linki) bulunuyor.
resim_arac : araçlar ve resimlerin ilişkilerinin tutulduğu tablo.

v_arac_linkli_resim: Araçlara ait resimleri LISTAGG analitik fonksiyonu ile, yan yana yazdırdım.

Create table ve data insert’ün ardından, yıl yıl araç detaylarını görmek için aşağıdaki sql’i hazırlayıp, view oluşturdum.

CREATE OR REPLACE VIEW v_Jaguar_modelleri_yil_bazli AS
 SELECT a.m_s_id, y.yil,m.model_ad,a.kasa_kodu, 
        TO_CHAR(a.motor_hacmi)|| 'cc' as motor_hacmi,
        m.model_ad
        ||TO_CHAR(ROUND(a.motor_hacmi/1000,1),'9.9') 
        || CASE WHEN a.yakit_tipi = 'Dizel' THEN 'd' END 
        || ' '|| a.hp||'hp'
        || CASE WHEN a.cekis = 'AWD' THEN ' '||a.cekis END 
        || CASE WHEN a.sanziman = 'OV' THEN ' Otm.' END 
        || CASE WHEN k.kasa_tipi<>'Sedan' THEN ' '||k.kasa_tipi END AS arac,
        a.performans_0_100_sn, a.ort_yakit_tuketimi,
        TO_CHAR(uretim_baslangic) ||'-'|| TO_CHAR(uretim_bitis) AS uretim_yili,
        k.kasa_tipi,
        r.resim_adet,
        r.resim_link
   FROM motor_sanziman_secenegi a
        INNER JOIN yil y on y.yil BETWEEN a.uretim_baslangic and NVL(a.uretim_bitis,2100)
        INNER JOIN jaguar_modelleri m on m.model_id = a.model_id
        INNER JOIN kasa_tipi k on k.kasa_tip_id = a.kasa_tip_id
        LEFT JOIN v_arac_linkli_resim r ON a.m_s_id = r.m_s_id;

View sorgu sonucunda, görüldüğü üzere tabloyu araç-yıl bazında görüntülemiş olduk. Oluşan View’a analitik fonksiyon ile sorgu yazarak, her senin en düşük yakıt yakan aracı ve en performanslı aracını listeledim. ( aynı sonuç ROW_NUMBER ile de yapılabilirdi ama subselect yazmak gerekirdi, bu sebeple ben DISTINCT ile FIRST_VALUE kullandım). İlgili araca ait resimlerin link’lerini de yanına getirdim. Daha sonrasında gözümüz gönlümüz açılsın diye HTML tablosu da oluşturacağım 🙂

CREATE OR REPLACE VIEW yil_bazli_yakit_perf_enleri AS
  SELECT DISTINCT 
         yil,
         FIRST_VALUE(arac) OVER (PARTITION BY yil ORDER BY ort_yakit_tuketimi ASC) AS yakiti_en_az_olan_jaguar,
         FIRST_VALUE(ort_yakit_tuketimi) OVER (PARTITION BY YIL ORDER BY ort_yakit_tuketimi ASC) AS yakit_ort,
         FIRST_VALUE(resim_link) OVER (PARTITION BY YIL ORDER BY ort_yakit_tuketimi ASC) AS resim_link_az_yak,
         FIRST_VALUE(arac) OVER (PARTITION BY YIL ORDER BY performans_0_100_sn ASC) AS en_performansli_jaguar,
         FIRST_VALUE(performans_0_100_sn) OVER (PARTITION BY YIL ORDER BY performans_0_100_sn ASC) AS hizlanma_0_100,
         FIRST_VALUE(resim_link) OVER (PARTITION BY YIL ORDER BY performans_0_100_sn ASC) AS resim_link_perf
    FROM v_Jaguar_modelleri_yil_bazli
ORDER BY 1 ;

Üstteki database tablosundan, alttaki HTML tablosunu ürettim. Aşağıdaki koda hatta sayfadaki tüm kodlara en alttaki dosyadan veya GitHub hesabımdan erişebilirsiniz.

Aşağıdaki tablo üsteki tablonun resimli HTML tablosu. Gözünüz gönlünüz açılsın diye aşağıdaki resimlere tıklayıp, araçları görüntüleyebilirsiniz.

YılYakıtı En Az Olan JaguarYakıt Ort.Resim Az Yak.En Performanslı Jaguar0-100 sn.Resim Perf.
1990XJS 4.0 226hp Cabrio9.91XJS 6.0 318hp Otm. Cabrio7.41
1991XJS 4.0 226hp Cabrio9.91XJS 6.0 318hp Otm. Coupe7.41 2
1992XJ220 3.5 250hp Coupe91 2 3XJ220 3.5 250hp Coupe3.81 2 3
1993XJ220 3.5 250hp Coupe91 2 3XJ220 3.5 250hp Coupe3.81 2 3
1994XJ220 3.5 250hp Coupe91 2 3XJ220 3.5 250hp Coupe3.81 2 3
1995XJS 4.0 233hp Cabrio10.71 2XJ 4.0 320hp Otm.6.31 2 3 4 5
1996XJS 4.0 233hp Cabrio10.71 2XJ 4.0 320hp Otm.6.31 2 3 4 5
1997XJ 4.0 241hp Otm.111 2 3 4 5XJ 4.0 363hp Otm.5.61
1998S-Type 3.0 238hp11.21 2 3 4XK 4.0 363hp Otm. Coupe5.41
1999S-Type 3.0 238hp11.21 2 3 4XK 4.0 363hp Otm. Coupe5.41
2000S-Type 3.0 238hp11.21 2 3 4XK 4.0 363hp Otm. Coupe5.41
2001X-Type 2.1 156hp9.21 2 3 4 5XK 4.0 363hp Otm. Coupe5.41
2002X-Type 2.1 156hp9.21 2 3 4 5XK 4.2 395hp Otm. Coupe5.41
2003X-Type 2.0d 130hp5.61 2 3 4 5XJ 4.2 400hp Otm.5.31 2 3
2004X-Type 2.0d 130hp5.61 2 3 4 5XJ 4.2 400hp Otm.5.31 2 3
2005X-Type 2.0d 130hp5.61 2 3 4 5XJ 4.2 400hp Otm.5.31 2 3
2006X-Type 2.0d 130hp5.61 2 3 4 5XK 4.2 416hp Otm. Coupe5.21 2
2007X-Type 2.0d 130hp5.61 2 3 4 5XK 4.2 416hp Otm. Coupe5.21 2
2008X-Type 2.0d 130hp5.61 2 3 4 5XK 4.2 416hp Otm. Coupe5.21 2
2009X-Type 2.0d 130hp5.61 2 3 4 5XK 5.0 510hp Otm. Coupe4.81 2
2010XJ 3.0d 275hp Otm.71 2 3XK 5.0 510hp Otm. Coupe4.81 2
2011XF 2.2d 190hp Otm.5.41 2XK 5.0 550hp Otm. Coupe4.41 2
2012XF 2.2d 163hp Otm.51 2XK 5.0 550hp Otm. Coupe4.41 2
2013XF 2.2d 163hp Otm.51 2F-Type 5.0 495hp Cabrio4.31
2014XF 2.2d 163hp Otm.51 2F-Type 5.0 550hp AWD Otm. Cabrio4.11
2015XE 2.0d 163hp3.81F-Type 5.0 550hp AWD Otm. Cabrio4.11
2016XE 2.0d 163hp3.81F-Type 5.0 575hp AWD Otm. Cabrio3.71 2 3
2017XE 2.0d 163hp3.81F-Type 5.0 575hp AWD Otm. Cabrio3.71 2 3
2018XE 2.0d 163hp3.81F-Type 5.0 575hp AWD Otm. Cabrio3.71 2 3
2019XF 2.0d 163hp4.71 2F-Type 5.0 575hp AWD Otm. Cabrio3.71 2 3
2020E-Pace 1.5 309hp AWD Otm. SUV21F-Type 5.0 575hp AWD Otm. Cabrio3.71 2 3
2021E-Pace 1.5 309hp AWD Otm. SUV21F-Type 5.0 575hp AWD Otm. Cabrio3.71 2 3

Kullanımda zorlandığınız ifadeler varsa, mail atarsanız, onları da eklemeye çalışırım. İlerde vakit buldukça MySQL, PostgreSQL, MS SQL ( Microsoft SQL) Veritabanı projeleri de yapıp, farklı başlıklar altında paylaşmayı düşünüyorum. Veri tabanı projesi yapımı 3-4 tablo bile olsa vakit alıyor. Bu sebeple keyif veren konu başlıklarında, farklı yapılar kullanarak database projesi yapacağım.

GitHub Üstunden İndirmek İçin Buraya Tıklayın