[]

SQL Çoklu Obje Mantığı

Bir haber sitesi olduğunu varsayarak anlatmak istiyorum durumu.
Haberler teker teker listeleniyor SQL üzerinde. haber_resim denen bir sütun var.
Burada haber_ana_resim.jpg şeklinde habere ait olan resim dosyasını bulunduruyorum.

Haber görüntülendiği zaman resim dosyası adı belli olduğundan sorunsuz bir şekilde listeleniyor. Fakat ben bu haber satırına daha fazla obje eklemem gerekiyor. Örneğin resim galerisi eklemem lazım. Ya da bu haber görüntülendiği zaman farklı dizilerle işlem yapacağım.

Durum bu olunca işler biraz karışıyor. Denediğim yöntemler aşağıda. Bir çok kişi de aynı şekilde yapmış zaten. Fakat daha pratik çözümlerin olup olmadığını merak ediyorum.

1- haber_galeri şeklinde bir sütun içerisinde galeri içerisinde bulunacak resim dosyalarının isimlerini | gibi karakterlerle birleştirip text haline getirip o sütun içerisine yerleştiriyorum. kullanacağım zaman da ya da haber görüntülendiğinde | işaretinden parçalayarak dizi haline getirip kullanıyorum.
- Bu yöntemi uyguladığım zaman sütun niteliğini text yapmam gerekir ki büyük dizilerle işlem yapabileyim. çözümleme problemi doğuracağını tahmin ediyorum. Biraz amatör duruyor. Dataları kontrol etme açısından yetersiz gibi.

2- haber eklendikten sonra yani haber öğesi benzersiz id numarasını aldıktan sonra galeri ekle sayfası yaparak, malum klasör içerisinde haber idsi adında bir klasör oluşturtup resimleri onun içine attırtıyorum. haber görüntüleneceği zaman klasör içerisindeki bütün dosyaları listeletip dize üzerinden işlem yaptırtıyorum.
-Bu biraz mantıklı duruyor ama haber oluşmadan önce haberin idsi ne olacak ki ben o numara ile bir bir klasör oluşturtayım? en son id numarasını alıp +1 yapabilirim ama o anda farklı bir bilgisayar da haber ekliyorsa işler karışır. Galeri için ayrı bir değer atanabilir id ile alakasız bir şekilde o id ile işlem yapılır. şu anda bu yöntemi kullanıyorum. fakat ayrı bir tabloya ihtiyaç duyuyorum.


3- galeri için ya da dizi nesneleri için ayrı bir tablo oluşturuyorum. galerinin ait olduğu haber idsini belirtip haber listelendiği zaman join işlemleri ile bu farklı bir tablodaki dizileri listeliyorum.
- Zaman alıyor. Farklı tablolarla join olayına girmem gerekiyor. Sadece galeri için bunu yapmak zahmet verici oluyor.


Fakat bu yöntemlerimde hoşuma gitmeyen durumlar söz konusu. Farklı çözüm arayışlarım bu yüzden.
Json stringlerini mysql içinde mi kullanayım?
Gelişmiş bir sql yapısı incelediğimde böyle bir şey gördüm.
left right durumları söz konusu. Bunlar ne demek oluyor.

Kısacası bir biri ile ilişkili dizilerle çalışmanın mantığı nedir?

Yardımlarınız için teşekkür ederim.

 
hacı ilk okul/orta okuldaki küme kavramını hatırlıyor musun, belirli nitelikteki şeyler bir küme'ye diğerleri bir kümeye ortak olanlar ortak kümeye hepsini kapsayan bir global küme vs. ?

eğer hatırlıyorsan o konulara bir göz at, zira veri tabanı tasarımı dediğin şey = küme'ler, db dersleri küme formülleri ile anlatılır eğer verini belirli unsurlara göre kümelere ayırırsan, kesişimleri ayrı kümelere koyarsan 10 unmara 5 yıldız olur, birde buradaki verileri memcache yada redis'e atarsın 1 günlük, db'ye erişim azalır konu kapanır.
  • selam  (05.09.15 17:29:22) 
left veya right join için,

bir defter aç önüne, sağdaki sayfa bir tablo soldaki sayfa bir tabloyu temzil etsin, sağdaki tablonun satır no'su ile soldaki tablonun satır no'su birbirini tutuyor ise komple önüne iki sayfa birden gelir,

ama tutmuyor ise (diyelim sağdaki sayfada iki satır nosu eksik),

bu durumda, left join için sol sayfadaki satırlar gelirken sağdaki sayfalara ait olan sütünlar null gelir.

select a.*, b.* from a left join b on (a.id=b.id) where a.bisi > 10;

a.id, a.bisi, b.id, b.baska_bisi
1 11 1 45
2 11 null, null

a tablosundaki bisi büyüktür 10'dan ama b tablosu ile a tablosunun kesişimleri yok bu durumda b sütünları null gelir.

bunun aynısı da right için geçerli bu durumdada b tablosunun verileri gelirken a nınkiler null olur.

left yada right demezsen sadece ilk satır gelir ikinci satır gelmez.

right dediğinde sağdaki tablo + kesişimler, left dediğinde soldaki tablo + kesişimler, join dediğinde sadece kesişimler gelir diyeyim.
  • selam  (05.09.15 17:42:18) 
bak birde şu var ki seni biraz daha güzel açar eksisozluk.com


  • selam  (05.09.15 20:25:28) 
bu şekilde 1 veya birkaç tablo ile işini göremezsin.

ilişkisel veritabanı'na bir bak derim. düzgün bir planlama ve sorgular ile işi çözebilirsin.
  • cursor  (05.09.15 20:39:49) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.