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

---------

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

From: Nesimi ACARCA <nesimia.com_at_gmail.com>
Date: Fri, 20 Feb 2009 13:15:49 +0200
Message-ID: <60bf9c0902200315v25851199o7c7a794c6d07cd53@mail.gmail.com>

CSV Çýktý:
"2009-02-19 14:37:15";"Ýsim:Elvin,Soyisim:Þiriyev"
"2009-02-20 11:20:53";"Ýsim:Nesimi,Soyisim:Karadað"

aslýnda bu þekilde istediðiniz gibi olmuþ ve dediðiniz gibi ayrý alanlarda
olsa daha iyi olurdu. Her neyse onuda siz parçalayýn.

bu arada soyadým Karadað deðil ACARCA :)

2009/2/20 Elvin Þiriyev <elvin_at_siriyev.net>

> Anýl haným, dün vari tabaný yapýsýný oluþturdum. Yani ikinci sorum sonradan
> geliþti.Tavsiyelerinizi inceledim.
> Nesimi bey, hayýr iki sonuç dönüyor.
>
> SQL dump:
> CREATE TABLE IF NOT EXISTS `forms` (
> `id` int(11) NOT NULL auto_increment,
> `user_id` int(11) NOT NULL,
> `name` varchar(250) collate utf8_turkish_ci NOT NULL,
> `status` enum('normal') collate utf8_turkish_ci NOT NULL default
> 'normal',
> `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
> PRIMARY KEY (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci
> AUTO_INCREMENT=2 ;
> INSERT INTO `forms` (`id`, `user_id`, `name`, `status`, `time`) VALUES
> (1, 1, 'Yeni Form', 'normal', '2009-02-19 14:36:36');
> CREATE TABLE IF NOT EXISTS `form_datas` (
> `id` int(11) NOT NULL auto_increment,
> `form_submit_id` int(11) NOT NULL,
> `form_field_id` int(11) NOT NULL,
> `value` tinytext collate utf8_turkish_ci NOT NULL,
> PRIMARY KEY (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci
> AUTO_INCREMENT=5 ;
> INSERT INTO `form_datas` (`id`, `form_submit_id`, `form_field_id`, `value`)
> VALUES
> (1, 1, 1, 'Elvin'),
> (2, 1, 2, 'Þiriyev'),
> (3, 2, 1, 'Nesimi'),
> (4, 2, 2, 'Karadað');
> CREATE TABLE IF NOT EXISTS `form_fields` (
> `id` int(11) NOT NULL auto_increment,
> `form_id` int(11) NOT NULL,
> `name` varchar(250) collate utf8_turkish_ci NOT NULL,
> `options` varchar(250) collate utf8_turkish_ci NOT NULL,
> PRIMARY KEY (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci
> AUTO_INCREMENT=3 ;
> INSERT INTO `form_fields` (`id`, `form_id`, `name`, `options`) VALUES
> (1, 1, 'Ýsim', ''),
> (2, 1, 'Soyisim', '');
> CREATE TABLE IF NOT EXISTS `form_submits` (
> `id` int(11) NOT NULL auto_increment,
> `form_id` int(11) NOT NULL,
> `user_id` int(11) NOT NULL,
> `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
> PRIMARY KEY (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci
> AUTO_INCREMENT=3 ;
> INSERT INTO `form_submits` (`id`, `form_id`, `user_id`, `time`) VALUES
> (1, 1, 1, '2009-02-19 14:37:15'),
> (2, 1, 1, '2009-02-20 11:20:53');
>
> 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`
>
> CSV Çýktý:
> "2009-02-19 14:37:15";"Ýsim:Elvin,Soyisim:Þiriyev"
> "2009-02-20 11:20:53";"Ýsim:Nesimi,Soyisim:Karadað"
>
> Üzerinde uðraþmamýn ve sizi meþkul etmemin sebebi @group'u bir þekilde
> farklý alanlara bölmemiz gerektiðini düþündüðümdendir.
>
>
>
> 2009/2/20 Nesimi ACARCA <nesimia.com_at_gmail.com>
>
>> öðleden sonra görüþelim o zaman :)
>>
>> bu arada sizin sorgu tek satýr döndermiyor mu?
>> *Ad Soyad:deneme deneme,Cinsiyet:Erkek,Yaþýnýz:16-30,Kullandýðýnýz
>> Diller:php, diðerleriAd
>> Soyad:nesimia,Cinsiyet:Erkek,Yaþýnýz:22-25,Kullandýðýnýz Diller:java, php,
>> diðerleri
>>
>> gibi
>>
>> *
>>
>>
>> 2009/2/20 Elvin Þiriyev <elvin_at_siriyev.net>
>>
>>> *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%f6rne%f0indeki 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
>>>
>>>
>>
>>
>> --
>> 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
Received on Fri 20 Feb 2009 - 12:04:14 EET

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.