[Linux-programlama] Re: Dinamik veri depolama ve okuma

---------

[Linux-programlama] Re: Dinamik veri depolama ve okuma

From: Elvin Şiriyev <elvin_at_siriyev.net>
Date: Fri, 20 Feb 2009 10:27:02 +0200
Message-ID: <ded068c00902200027r3e19c3d1le7bef8c779e51968@mail.gmail.com>

*form_fields* tablomun bir de *options* alanı var. veri tiplerini orada
tutuyorum.

vakitiniz azsa:
teşekkür ederim. sorunumu öyle yada böyle tavsiye ettiğiniz yöntemle
çözeceğim. saygılar sunarım.

vaktiniz bolsa:
"sorguyu nasıl yaparız" ve "sorguyu nasıl yaparsınız" diye sordum bile.
çünki bunun çözümünde yeni birşeyler öğreneceğiz gibime geliyor.

2009/2/20 Nesimi ACARCA <nesimia.com_at_gmail.com>

> artık orası size kalmış tek tek mi yoksa join mi yaparsınız bilemem :) Ama
> bana, "sorguyu nasıl yaparız?" diye soruyorsanız yardım etmeeye çalıısıırm.
>
> Hatta alanlar tablosuna "veri tipi" alanı açarak, kullanıcının gireceği
> verilerin metin mi, sayı mı, tarih mi ...vb. şeklinde belirtebilirsiniz.
>
> 2009/2/20 Elvin Şiriyev <elvin_at_siriyev.net>
>
> Evet. EAV mantığı bu nesimi bey. şimdi de bunun sorgusunda takıldım.
>>
>> tek sorguyla (ve mümkünse tek SELECT ile (JOIN olabilir :P ) ) bunu
>>
>> ____________________________________________________
>> *Ad Soyad | Cinsiyet | Yaşınız | Kullandığınız Diller
>>
>> -------------------------------------------------------------------------------------------
>> *deneneme deneme | Erkek | 16-30 | php, diğerleri
>> nesimia | Erkek | 22-25 | java, php, diğerleri
>>
>> -------------------------------------------------------------------------------------------
>>
>> şekline sokmak için nasıl bir sorgu kullanabilirim.
>>
>> *Geldiğim Nokta:*
>> Sorgu:
>> *SELECT `fs`.`time` , @group:= GROUP_CONCAT(DISTINCT CONCAT( `ff`.`name`
>> , ':', `fd`.`value`)
>> ORDER BY `ff`.`id` ASC
>> SEPARATOR ',')
>> FROM `form_datas` AS `fd`
>> INNER JOIN `form_submits` AS `fs` ON ( `fs`.`id` = `fd`.`form_submit_id` )
>> INNER JOIN `forms` AS `f` ON ( `f`.`id` = `fs`.`form_id` )
>> INNER JOIN `form_fields` AS `ff` ON ( `ff`.`id` = `fd`.`form_field_id` )
>> WHERE `f`.`id` =1
>> GROUP BY `fs`.`id`*
>> Sonuç:
>> *Ad Soyad:deneme deneme,Cinsiyet:Erkek,Yaşınız:16-30,Kullandığınız
>> Diller:php, diğerleri
>> Ad Soyad:nesimia,Cinsiyet:Erkek,Yaşınız:22-25,Kullandığınız Diller:java,
>> php, diğerleri*
>>
>> NOT: benim tablo yapında fazladan bir form_submits(form_submit_id) var. bu
>> da bir formdan ve farklı kişilerden gelen verileri ayırt edebilmek için.
>> Kafaları karıştırmasın.
>>
>>
>> Saygılar.
>>
>>
>> 2009/2/20 Nesimi ACARCA <nesimia.com_at_gmail.com>
>>
>> formalar
>>> *id | isim | aciklama*
>>> 1 | Yazılım Dili Anketi |
>>>
>>> alanlar
>>> *id | fid | isim |veritipi | aciklama*
>>> 1 | 1 | Ad Soyad | Metin |
>>> 2 | 1 | Cinsiyet | Metin |
>>> 3 | 1 | Yaşınız | Metin |
>>> 4 | 1 | Kullandığınız Diller | Metin |
>>>
>>> veriler (satırlar)
>>> *id | aid | deger*
>>> 1 | 1 | deneme deneme
>>> 2 | 2 | Erkek
>>> 3 | 3 | 16-30
>>> 4 | 4 | php, diğerleri
>>> 5 | 1 | nesimia
>>> 6 | 2 | Erkek
>>> 7 | 3 | 22-25
>>> 8 | 4 | java, php, diğerleri
>>>
>>> fid = form id
>>> aid = alan id
>>>
>>> Her form için form tablosunda bir kayıt açarsınız. Açılan formaların
>>> alanları içinde alanlar tablosunu, bu alanlara veri girmek içinde veriler
>>> tablosunu kullanabilirsiniz.
>>>
>>> Mesela, verileri okumak için.
>>> 1-Form tablosundan formun adını ve id nosunu al
>>> 2-fid ye göre veri girilecek sütunu olusturup, bu sütuna girilecek
>>> verileri "veriler" tablosunda alıp yukarıdan aşağı ya doğru gir.
>>> 3-alanlar tablosunda ki veriler bitene kadar 2. adımdan devam et.
>>>
>>> (2. ve 3. adımlarda iç içe döngü olduğunu unutma)
>>>
>>> şuan aklıma gelen böyle bisi, umarım yanlış anlamamışımdır. :)
>>>
>>>
>>> 2009/2/19 Elvin Şiriyev <elvin_at_siriyev.net>
>>>
>>>> Anıl hanım, MySQL ve PHP kullandığım için sanırım django işimi
>>>> göremeyecek.
>>>> araştırmalarımda "EAV model" denilen bir veri tabanı modeline rasladım.
>>>> aslında kullandığımız birşey, her form için bir tablo oluşturmaktan daha
>>>> mantıklı geliyor. Ama yavaş olacağını düşünüyorum. başka bir olanak da
>>>> veritabanına serialize ederek kaydetmek, bu zaman da sıralama vs işlemleri
>>>> mümkün olmayacak veya performans sıkıntısına neden olacak.
>>>>
>>>> Karar veremedim.
>>>>
>>>> İlginiz için teşşekkürler.
>>>>
>>>> 2009/2/19 ANIL KARADAĞ <anil.karadag_at_gmail.com>
>>>>
>>>> Django'yu biliyor musunuz bilmiyorum ancak son 2 aydır bu güzel
>>>>> framework ile ugrasiyorum. Bu framework kendine özel bir model api ve
>>>>> database api içermektedir.
>>>>>
>>>>> Django'da veri tabanında yer alan bir tablo model api kurallarına
>>>>> uygun bir sekilde hazırlanan bir class a eşittir.
>>>>>
>>>>> Ornek
>>>>>
>>>>> Class student(models.Model):
>>>>> first_name= models.CharField(max_lenght=20, null=True)
>>>>> last_name= models.CharField(max_lenght=30, null=True)
>>>>> note= models.DecimalField(max_digits=5, places=2, default=0)
>>>>>
>>>>> kod blugunun sql carsiligi:
>>>>>
>>>>> create table student (first_name varchar(20) default null, last_name
>>>>> varchar(30) default null, note decimal(5,2) default 0,) dir ve buna ek
>>>>> olarak otomatik artan bir id kolonu.
>>>>>
>>>>> Sende formundaki degerlere gore tablosunu bu sekilde uretebilirsin.
>>>>>
>>>>> http://www.djangoproject.com/
>>>>> http://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs
>>>>>
>>>>> 2009/2/19 Elvin Şiriyev <elvin_at_siriyev.net>
>>>>>
>>>>>> * TEKRARDIR
>>>>>>
>>>>>> http://spreadsheets.google.com/viewform?key=p2D-4c-fT0DKBPYbyIbZWIA%c3%b6rne%c4%9findeki gibi dinamik olarak oluşturulan formdan gelen verileri
>>>>>> http://spreadsheets.google.com/ccc?key=p2D-4c-fT0DKBPYbyIbZWIA daki
>>>>>> gibi sundabilmek için nasıl bir veritabanı yapısı oluşturmalıyım?
>>>>>>
>>>>>> Tavsiyelerinizi bekliyorum.
>>>>>>
>>>>>> Teşekkürler ...
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Elvin Şiriyev
>>>>>> http://siriyev.net
>>>>>>
>>>>>> _______________________________________________
>>>>>> Linux-programlama mailing list
>>>>>> Linux-programlama_at_liste.linux.org.tr
>>>>>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Anıl KARADAĞ
>>>>> Cihan Bilişim A.Ş. - Yazılım Geliştirme Uzmanı
>>>>> GYTE- Bilgisayar Müh. Yüksek Lisans öğrencisi
>>>>> http://anilkaradag.info/blog
>>>>>
>>>>> _______________________________________________
>>>>> Linux-programlama mailing list
>>>>> Linux-programlama_at_liste.linux.org.tr
>>>>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Elvin Şiriyev
>>>> http://siriyev.net
>>>>
>>>> _______________________________________________
>>>> Linux-programlama mailing list
>>>> Linux-programlama_at_liste.linux.org.tr
>>>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>>>
>>>>
>>>
>>>
>>> --
>>> Nesimi ACARCA
>>> www.nesimia.com
>>>
>>> _______________________________________________
>>> Linux-programlama mailing list
>>> Linux-programlama_at_liste.linux.org.tr
>>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>>
>>>
>>
>>
>> --
>> Elvin Şiriyev
>> http://siriyev.net
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> Linux-programlama_at_liste.linux.org.tr
>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>
>>
>
>
> --
> Nesimi ACARCA
> www.nesimia.com
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>

-- 
Elvin Şiriyev
http://siriyev.net

_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Fri 20 Feb 2009 - 09:15:36 EET

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.