• 21-05-2009, 14:02:59
    #1
    Öncelikle merhabalar,

    Merak ettiğim bir şey var. Arkadaşlık sitelerinde facebook yonja vs. tarzı sitelerde kim kimin arkadaşı gibi bilgilerin bulunduğu veritabanında ki tablo nasıl şekillendiriliyor acaba? Birde atıyorum 10 adet arkadaşım var.. Profilime girdiğimde onların yaptığı son aktiviteleri görüyorum. Bu tarz bir sorgulama nasıl yapılıyor..? Umarım anlatabilmişimdir..

    Cevaplarınızı bekliyorum..
    Herkese kolay gelsin..
  • 21-05-2009, 14:37:13
    #2
    Üyeliği durduruldu
    mesela ali diye uye var onun yanina bir sutun daha açıyorsunuz ve arkadaşlarının idsini kaydediyorsunuz daha sonra sorulama yaparken sql de where komutu ile listeleme yapıyorsunuz.en basiti bu şekilde.öteki olayda session ile yapılıyor tabi üzrinde çalışmak lazım. şimdi aklıma gelenler bunlar kolay gelsin
  • 21-05-2009, 15:30:35
    #3
    bu iş için 2 tablo oluşturabilirsin.atkadaşlık tekliflerinin tutulduğu tablo ve arkadaşlığın tutulduğu tablo.
    tablo1 : arkadas_talep
    alanlar: id,gonderen_id,gonderilen_id
    -------------
    tablo2 : arkadaslik
    alanlar : arkadaslik_id,uye_id,arkadas_id,tarih
    -------------
    arkadaşlık teklifleri arkadas_talep tablosuna eklenir.karşıdaki teklifi kabul ederse veriler arkadaslik tablosuna aktarılır ve arkadas_talep tablosundan silinir.daha once aynı kişiye teklif gönderip gönderilmediğini de arkadas_talep tablosundan sorgulatırsın.


    Bu işlemi tek tabloda da kabul durumunu kontrol edeceğin alan ekleyerek yapabilirsin.Ama ben 2 tabloda yapmayı tercih ederdim şahsen.

    Kolay gelsin
  • 21-05-2009, 15:38:07
    #4
    Üyeliği durduruldu
    yapıyı karşılıklı düşünürsen ben senin arkadaşınım sen benim arkadaşımsın.

    yani bir tabloda iki kayıt olarak düşünebilirsiniz.

    birde bunların durumu diye bir alan oluşturursaniz. ilk talep gönderilince

    id
    kim
    kimin
    durum

    gibi tabloya

    '',1,2,0
    '',2,1,0

    gibi kaydedersiniz.

    onay durumunda durum flagini 1 yaparak arkadaşlığı aktif etmiş olursunuz

    gibi gibi.

    yapı çift taraflı olduğu için iki kayıt gibi hareket etmezseniz kimin kimin arkadaşı olduğunu bulmak arap saçına döner
  • 21-05-2009, 15:47:35
    #5
    Cevaplarınız için çok teşekkürler arkadaşlar.

    Olayı biraz anladım ama peki bir arkadaşlık sitesinde 10000 lerce üye ve bu üyeler arasında da yüzbinlerce arkadaşlık bağlantısı olacaktır. Bu şekilde hazırlanmış bir tablo yapısı yeterince performanslı olur mu?

    Bir diğer sorum da tamam bu şekilde altyapıyı oluşturduk. Şimdi mesela benim 50 tane arkadaşım var. Ve bu 50 arkadaşın son aktivitelerini tarih sırasına göre sıralamak istiyorum. Bunu nasıl yapcam..? Örneğin ahmet mehmetle arkadaş oldu. osman hayrinin duvarına yazdı. ayşe hasana rakı yolladı vs gibi.

    Umarım anlatabilmişimdir

    not: forumda buna benzer bir konu bulamadım. o yüzden verilecek cevaplar oldukça önemli bir referans olacaktır diğer üyeler için.
  • 21-05-2009, 15:51:47
    #6
    Hah işte bu aktivite olayına kafa yoralım kardeş haydi sdemirkeser kardeş yap bir fırtına sen de Ben düşüne durayım bu arada. güzel bir yöntem bulunca yazarım
  • 21-05-2009, 15:54:34
    #7
    Üyeliği durduruldu
    NaCReS adlı üyeden alıntı: mesajı görüntüle
    Cevaplarınız için çok teşekkürler arkadaşlar.
    Olayı biraz anladım ama peki bir arkadaşlık sitesinde 10000 lerce üye ve bu üyeler arasında da yüzbinlerce arkadaşlık bağlantısı olacaktır. Bu şekilde hazırlanmış bir tablo yapısı yeterince performanslı olur mu?
    zaten bu tabloyu ilk aşamada kullanacaksin.

    örnek sorgu oluşturacak olursan iç içe sql kullanabilirsin

    select * from yazilar where sahip in (select kim from arkadaslik where kimin = '3');

    gibi gibi
  • 21-05-2009, 16:01:04
    #8
    @sdemirkeser cevap için teşekkürler.. rica etsem şu iç içe sorgulama olayını biraz daha açabilir misin? ya da daha geniş bir kaynak önerebilir misin?
  • 21-05-2009, 16:19:20
    #9
    Üyeliği durduruldu
    NaCReS adlı üyeden alıntı: mesajı görüntüle
    @sdemirkeser cevap için teşekkürler.. rica etsem şu iç içe sorgulama olayını biraz daha açabilir misin? ya da daha geniş bir kaynak önerebilir misin?
    sub query diye geçer. bu şekilde aratirsaniz daha doyurucu kaynaklar bulabilirsiniz.

    başlı başına bir konu zaten