folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Tecrübeli Algoritma Ustalarına Bir Soru



Tecrübeli Algoritma Ustalarına Bir Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek

    Yaklaşık 250 tablo bulunan relation bir DB düşünün,

    Örnek senaryo:

    2015 Yılı, -YIL

    O yılda ki futbol takımları, -TAKIMLAR

    Futbol takımlarından herbirinin oyuncuları, -OYUNCULAR

    Oyuncularının önceden oynadıkları takımlar, -ESKİTAKIM

     

    Yukarıda yer alan her satır ayrı birer tabloya karşılık geliyor.

    Bunlar yukarıdan aşağıya bağlantılı şekilde tutulmakta.

    Bir servis yazıyoruz, 

    Adamın oynadığı eski takımlardan birini -yani en son tablodan- veri silmek veya güncellemek istiyoruz.

     

    Servis kısmını düşünelim. Bu verilerin hepsi ekranda bağlantılı butonlara tıklayarak gösteriliyor.

    Ekrandan bir veri silme veya güncelleme için gönderildiğinde 2 ihtimal var gibi görünüyor.

     

    Ya her tablo için CRUD metodları yazılacak,

    Yada tek bir metota gelen parametrele göre, tablodan tabloya erişim sağlanacak.

     

    Ayrı metotlar yazıldığında, ortada ki bir veriyi sildiğimizde, üstünde ki ve altında ki bağlı tabloları da ayrıyeten düşünmek gerekecek. Buda bağımsız ve çok metoda yol açıyor.

    Tek bir metotdan en alta kadar tablolar ayarlanarak parent dan childa inildiğinde ise kocaman bir soru meydana geliyor.

     

    Kısaca bağlı tablolar arasında, ne tür bir yöntem veya bir tasarım metodu, CRUD işlemini etkin hale getirebilir.

     

    zeybekustasi tarafından 24/Tem/15 19:19 tarihinde düzenlenmiştir

    https://www.youtube.com/watch?v=WC3-71NKwPw
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    tam anlamamakla beraber sorduğun şey  mysql join olabilir mi hocam


    black implies white, self implies other, life implies death.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek
    nurulmac11 bunu yazdı

    tam anlamamakla beraber sorduğun şey  mysql join olabilir mi hocam

    Db önemli ise Mssqgl kullanılıyor.

    Konu join yapmak değil. İşlemleri ortak metottan mı yapmalı ayrı metotla mı yapmalı.


    https://www.youtube.com/watch?v=WC3-71NKwPw
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Hocam açık söyleyeyim soruyu tam anlayamadım anladığım şey şu. Bir birine bağlı tablolarda silme ve güncelleme yaptığınızda (tablolardan birinde) diğer tablolar nasıl otomatik olarak etkilenir bu mu?

    Reletional database sistemlerinde foreign key yapısında ON UPDATE veya ON DELETE gibi kavramları var. Mesela referans alınan satır silindi, ON DELETE ile bağlı bulunan satırında silinmesini otomatik olarak RDBMS'e yaptırtabiliyorsun.

    Soruyu daha iyi açıklarsan sevinirim. Zira şu an pek kafam algılayamıyor soruyu. 250 TAblo var bu tablolar biribiri ile ilişkili. Ne yapabiliyorsunuz, ne yapmak istiyorsunuz, ne yapamıyorsunuz tam anlayamadım k.surama bakma.

     

    DrKill tarafından 24/Tem/15 23:51 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    yeni geldim eve sonra bakacağım soruna ama kısaca anladığım kadarıyla ilişkisel bir şeyler istiyorsun.. o yüzden nosql çözümleri sana gitmez..

    onun haricinde join olayı çok fazla cost u olan bir fonksiyondur, o sebeple sorguyu düzgün yazmak önemlidir, ilk başta elde edeceğin tablo min. olmalı ondan sonra join işlemini yaptırmalısın.. iki tip sorgu planı var, mantıksal ve fiziksel, bunları gözönüne alarak cost hesaplaması yapman ve en az costu hangi tip veriyorsa onu kullanmak önemlidir.

    diğer bir önemli faktörde indexing olayı.

    neyse 3 tip join var ve bunların costlarına bak

     

     

     

     

     

    tabi bu resimlerle pek anlaşılmıyor.. ancak burada tablolar var. istersen slaytları verebilirim sana.. kendin çözmeye çalışabilirsin en verimli şekilde ... 


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    musdawdaf
    musdawdaf's avatar
    Kayıt Tarihi: 01/Ağustos/2006
    Erkek

    simdi bu oldukca fazla gordugum bir sey:

    simdi bunlar yukaridan asagiya bagli demissin ama biraz tutarsiz geldi o.

    onun disinda mesela diyorsun ki bir oyuncuyu silecegim o zaman onceden oynadiklari takimlari falan silsin?

    - bunun icin player, team, year senin dictionary tablolarin. yani definition yapilmis gruplar.

    - eski takim, bu yilki takim falan da senin fact grubun yani olusturulmus data.

    - bunlari boyle dusunerek en mantiklisi foreign key verip delete on cascade yapmak.

       * yani eger player table'indan biri silinirse tum bu yil ve eski yil takim oyuncunlarindan da otomatik silinir. 

       * sadece eski takim silinirse oyuncuya dokunmazsin.

    - ha diyorsun bunlari yapma sansim yok o zaman ben genelde tek transaction acip kendi logic sirami olusturarak siliyorum. Basit bir ornek olarak verirsek:  

    transaction.begin();
    transaction.deleteRow(DELETE_PRIV, new Object[]{userId}, dbOperationTimeout);
    transaction.deleteRow(DELETE_USER, new Object[]{userId}, dbOperationTimeout);
    transaction.end();

     

    ilk satirda user yetkileri  silinmis. sonra da user'in kendisi siliniyor cunku buyuk ihtimalle yetkileri foreign key vermisler ve direkt user'i silemiyorsun. bu aslinda sakat bir yaklasim cunku tutup yetkileri sildin ama useri bir sekilde silemedi o zaman adam ortada kaliyor. bu gercek hayatta nasil olabilir? diyelim mi her user grubu kendi yarattigi userlari siliyor. sen eger priv silerken user yetkisini check etmeyip sadece user kisminda yaparsan bu durumu yasarsin.

    ozet olarak alakali datalari cok iyi kontrol et acik cikmasin sonra. ama bence en temizi uygunsa yapiniz foreign key delete on cascade ver gitsin. 

    ayrica daha once 2-3 kere bu tablo yapisini kurdum. genelde benim tercihim season bazinda kadro olusturmak seklindeydi. 

    A takimi

    B takimi

    player1

    player2

    2014-2015 

    kadro: A takimi - 2014-2015 player1

               A takimi - 2014-2015 player2

    gibi kurunca hem takim kadrolari hem de oyuncunun gecmis takimlari sezonlari ile birlikte kullanmasi kolay oluyordu.

    eger yanlis anlamadiysam derdin bu galiba. degilse detayli da pm'den sorabilirsin

     

     

     

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek

    Soru su aslinda buyuk bir proje var burada sorgular uzun, 5 tablo birbiriyle iliskili diyelim. 3. Tablodan bir verinin silinmesi ile 5. Tablodan veri silinmesi icin tek bir silme metodu kullaniliyor. Hani sen 3. Tablodan siliyon ama metot tek oldugu icin metodun icinde sorgunun 3. Tabloya ait oldugunu anlaman uzun satirlara if else lere yol aciyor. Merak ettigim nokta su baglantili tablolarin her birinde ekle sil yapilmasi icin tek bir metot mu yazmak lazim yoksa her tablodan veri silmek icin ayni metotlar mi yazmak lazim. Ekranin biri 5 tablo kullaniyor diyelim 5 ide ekranda listeleniyor 4. Tabloya ekleme yapilacaksa ortak olan ekle metodu kullaniliyor. Hani 4 e ekledigini icerde anliyosun. Oysa direk 4 e eklede diyebilirsin. Hangisi etkin konu bu. Umarim daha iyi aciklamisimdir.

     

    zeybekustasi tarafından 24/Tem/15 23:10 tarihinde düzenlenmiştir

    https://www.youtube.com/watch?v=WC3-71NKwPw
Toplam Hit: 1045 Toplam Mesaj: 7
algoritma