• 21-10-2015, 00:21:27
    #1
    Merhaba arkadaşlar,

    Öncelikle soru-cevap veya konu-yorum tarzı bir sistem düşünün. Konularla yorumlar aynı tabloda.

    Ali bir konu açtı, Mehmet Ali'nin konusuna bir cevap yazdı. Bu durumda mehmetin yazdığı yorum/cevap da bir konu olacak ve ona da yorum yapılabilecek. Yani Ayşe de Mehmet'in konusuna yorum yapabilecek, sonra Murat da Ayşe'nin konusuna..

    Aslında bunda sıkıntılı bir durum yok ama üst konuların tamamı bilinsin istiyorum. Yukardaki isim-konu hiyerarşisinden hareketle Murat'ın oluşturduğu cevabın (konunun) sadece üst konusu olan Ayşe'nin konusunu değil, onun da üst konularının tamamını (hiyerarşik sıraya göre) gösterebilmek istiyorum.

    Nasıl bir veritabanı yapısı önerirsiniz?

    İyi akşamlar, iyi çalışmalar.
  • 21-10-2015, 07:36:39
    #2
    konular
    konuId => Konunun primary keyi
    ustKonusuId => Hangi konu için yazılmış, Mehmet'in konusuna mı yazılmış Ayşe'nin konusuna mı yazılmış, Eğer üst konusu yoksa bu değeri 0 yapabilirsin yani konuyu Ali açmış olur
    anaKonusuId => En üstteki konunun id değeri, Mehmet, Ayşe ve Murat'ın, Ahmet'in konusuna yazdığını belirtsin. Aslında bunu ustKonusuId ile yapabilirdin 0 değerini bulana kadar fakat yorum arttıkça sıkıntı olacaktır. Bu yüzden bunu da kullanabilirsin.

    Kolay gelsin
  • 21-10-2015, 10:24:11
    #3
    @Sable; Hocama katılıyorum biraz karmaşık bir durum ama üstesinden gelebileceğini varsayıyorum, yaparken farkediceksin ama o kadar karmaşık gelmeyebilirde şimdiden kolay gelsin üstadım.
  • 21-10-2015, 20:09:38
    #4
    En basit hali ile şöyle söyleyeyim

    Konular tablonun içinde 'id' 'konu' 'ust' şeklinde sutunlar olacak.
    id = konunun benzersiz id si
    konu = konu başlığı
    ust = hangi konuya yazılmışsa

    Yani yorumlar ve sorular dediğimiz herşey bir konu olacak.

    Örnek;

    '1' - 'php nedir' - null
    '2' - 'kedim hasta' - null
    '3' - 'sacma bir dildir' - '1'
    '4' - 'sen sus' - '3'

    Yani ust kısmındaki id, hangi konuya cevap olarak yazıldığını verecek.
    Çekerken de örneğin 1'i listelet. while'ın sonunda ust'u 1 olan başka içerik var mı diye arat. Varsa onu da bunun altına çek.