Php ile yazdığım bir scriptde mysqlde bir tabloda yaklaşık olarak 40 tane sütun olacak. Ama bu sütunların tuttuğu değer hep küçük değerler olacak. Bazıları 0/1 şeklinde değerler olacak. Ama aklıma takılıyor 40 tane olması sonradan sıkıntı yapar mı? Sıkıntı olacaksa önerileriniz nelerdir?

soruldu: 14 Nis '13, 08:18

CodErode's gravatar image

CodErode
091618
cevap kabul oranı: 0%

değiştirildi: 18 Nis '13, 02:52

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183

Nasil bir sıkıntı? Performans açısından mı, yoksa kodlama/kullanım açısından mı?

(14 Nis '13, 08:54) mhkoca60 mhkoca60's gravatar image

yapmak istediginiz senaryoyu yazarsanız, veritabanı tasarımı konusunda daha iyi tavsiyeler alabilirsiniz. Zira 40 tane alanın olması kotu tasarımdan da kaynaklanıyor olabilir.

(14 Nis '13, 09:31) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Bir ürün var ve bu ürünün özellikleri var, 20 özellik sayı ile gösteriliyor en fazla 4 haneli rakamlar. Diğer 20 tane özellikte 0/1 yani Var/Yok diye gösteriliyor. Bunun haricinde veritabanıyla işim yok.

(14 Nis '13, 09:34) CodErode CodErode's gravatar image
2

O zaman özellikler tablonuz olur. Bu tabloda bu 40 özellik olur birde özellik tipi tablonuz olur bunda da int mi yoksa bool mu diye tutarsınız. boylece iki alandan oluşan iki tablo ile halledersiniz, daha sonra eklenecek ozellikler ve ya özellik tipi sizin için cok kolay olacaktır.

(14 Nis '13, 10:34) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Teşekkür ederim özellik tipi diye ekstradan bir tablo eklemeyi düşünmüyorum bu şekilde olacak. 40 tane olması performans açısından sıkıntı yaratmaz umarım.

(14 Nis '13, 10:46) CodErode CodErode's gravatar image
1

Performans açısından problem olmaz ama çok ta etkin bir yöntem degil, sonradan özellik ekleyemezsiniz(tabloya her defasında yeni kolon eklemek zorunda kalırsınız), yönetemezsiniz(yani bir tip -mesela string bir değişken-) ve esneklik açısından çok kötü bir tasarım olur. Tabi yinede sizin bileceğiniz bir iş.

(14 Nis '13, 11:13) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster

Sakıncası olacağını sanmıyorum teknik açıdan. Aslında konu sadece Veritabanı Normalizasyonu konusu ki bunu da kimsenin takacağını sanmıyorum :) Bir tabloda birbirine bağlı değerlerin tutulması normalizasyon problemidir ve birbirlerinden ayrı tablolarda tutulmaları lazımdır. Mesela cinsiyete göre renk veriyorsanız aynı tabloda E (erkek) ve "Mavi" olmamalı. Mavi renk, "renkler" gibi bir tablodan foreing key olmalı. Bunun gibi başka veri bağımlılıkları da var isterseniz araştırabilirsiniz ama teknik açıdan bir sorun yok. Hatta bir sütüunda birden çok değer tutup virgül gibi bir ayraç ile ayırmaktan daha iyidir.

Bir Türkçe kaynak

Bir ingilizce kaynak

permanent link

cevaplandı: 14 Nis '13, 08:23

numankaraaslan's gravatar image

numankaraaslan
1.8k253749
cevap kabul oranı: 19%

Ekleyeyim: Yazdığınız kodlarda bütün sütunları birden çekmek hafızayı fazla kullanmaya sebep olabilr fakat bu da tamamen sizin kodlamanıza kalmış.

(14 Nis '13, 08:25) numankaraaslan numankaraaslan's gravatar image

Tamamıyla performans açısından sormuştum, veriyi tek seferde çekecem bir dizide tutacağım oradan site içerisinde gerekli div ler arasına yerleştireceğim verileri. Ama zaten bu tablo haricinde de veri çekmeyeceğim o yüzden veritabanında performans açısından birşey olmaz diye düşünüyorum. Sizce nasıl olur?

(14 Nis '13, 09:21) CodErode CodErode's gravatar image

Tablodaki tüm ürünleri mi tek seferde çekeceksiniz?

(14 Nis '13, 10:25) mhkoca60 mhkoca60's gravatar image

Evet hocam. Zaten o tablo harici tablo yok.

(14 Nis '13, 10:26) CodErode CodErode's gravatar image

Performans açısından bence düşünülmesi gereken şey ürün sayısı. Bir ürün için yaklaşık 100 byte gibi bir veri gelecek anladığım kadarıyla. Ürün sayısı az olduğu sürece problem olmayacaktır. Ama tolere edeceğiniz sınırın belli olması lazım. Mesela 1000 kayıttan fazlasını tek seferde çekmek bence sıkıntı olacaktır(Gerçi cache mekanizmasıyla belli oranda aşılabilir). Yoğun kullanılacağı düşünülen bir site ise -seçildiğinde- ürün veya (varsa) kategori bazlı kayıtları çekmek daha mantıklı olabilir.

permanent link

cevaplandı: 14 Nis '13, 11:13

mhkoca60's gravatar image

mhkoca60
1.8k264554
cevap kabul oranı: 15%

Tek seferde o kadar ürün çekmiyorum, bir sayfada tek ürünün özelliklerini sunuyorum. Mesela bir örnek vermek gerekirse telefonu ürün olarak seçersek, s3 için bir sayfa var ve bu sayfada özellikleri çekiliyor, misal s3 kamera çözünürlüğü: 8mp gibi. Ürünün tanıtımı yapılan bir sayfa da diyebiliriz bu scripte. Ve veritabanına girilecek metinler ufak int değerler ve boolean değerler.

(14 Nis '13, 11:20) CodErode CodErode's gravatar image

Üstte onu kastetmiştim,"Tablodaki tüm ürünleri mi tek seferde çekeceksiniz?" diyerek. Sadece s3 mü yoksa tüm ürünler mi manasında.. Bir yanlış anlaşılma olmuş :)

(14 Nis '13, 11:42) mhkoca60 mhkoca60's gravatar image

@mhkoca60 Tamam ürüne özel bir sayfa yapacaksınız. Ama tüm ürünlerin, kategoriye göre, ya da aranan ürünlerin listeleneceği bir sayfanız olmayacak mı? Kullanıcılar ürünün sayfasına nasıl gelecek? Eğer özelliklere göre arama yapılacak ve ürün sayısı çok olacaksa bu kadar çok alan içeren bir tasarım performans problemi yaratır. Veritabanı tasarımı aslında zor iştir. Yetersiz tanımlanmış veritabanını ilerde düzeltmek daha da zor iştir.

(15 Nis '13, 11:08) ertuncefeoglu ertuncefeoglu's gravatar image

Haklı olabilirsiniz. Ben düşünülen tasarımla alakalı bir şeyler söylemeye çalıştım. Bahsettiğiniz özel arama tarzı durumları ise düşünmemiştim. Böyle bir durumda performansın yanında kodlama noktasında da sıkıntı olacağını düşünüyorum. Çünkü sorguda ya alan adları da dinamik eklenecek ya da örneğin 1 değerine sahip kolon adları getirilecek. Tasarım noktasında ise yukarıda, @Alirıza Adıyaman'ın önerdiği yapıya katılıyorum.

(15 Nis '13, 13:52) mhkoca60 mhkoca60's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×168
×144

Soruldu: 14 Nis '13, 08:18

Görüntüleme: 1,342 kez

Son güncelleme: 18 Nis '13, 02:52

powered by BitNami OSQA