Alıntı (acehreli:1342650040):
> Alıntı (huseyin325325):
> Yani ad ve şifre birar Subtable
Eğer sonunda doğru anlıyorsam :) sanıyorum 'relational database' özelliğimizin olması gerekiyor. Yani belirli bir tablodaki veri başka tablodaki verilerle ilişkili (related). Ben veri tabanlarının nasıl gerçekleştirildiklerini de bilmiyorum. :(
Ali
Haklısınız. Veri tabanlarında veri türleri için hazırlanan tablolarda otomatik olarak artan bir kayıt numarası olur. Bir verinin biricik olabilmesi için aynı kayıt satırında o biricikliği sağlayan id(kimlik) ad, soyad, elektronik posta, doğum tarihi vs gibi veriler bulunabiliyor.( ki üye için bir sayaç ile her kayıtta +1 artan bir int türü düşünebilirsiniz burada) Sadece isme ve şifreye dayalı bir veri mimarisi genellikle bu tür çözümsel sıkıntılara neden olmakta. Sanırım sıkıntı da buradaki veri türünün tam işlenebilme yönteminin tasarlanamıyor oluşunda.
Hüseyin;
Üyeyi temsil eden bütün verilerin bir tabloda ve biricik verilerinin bir kayıt satırında olduğunu düşünmeye çalışmalısın.
O üyenin de ilişkili verileri yani okuduğu kitapları, kitaplar tablosunda (ki bunlarda da ısbn gibi değişmez ve biricik bir kayıt seti kimliği bulunmalıdır) toplanmalıdır. böylece kitap isimleri ve yazarları birbirine karışabileceğinden öksüz(orphan) kayıtlar ile veri tabanımızı boşuna şişirmeyelim, gittiği filmleri de ayrı bir tabloya imdb numarası gibi yine biricik bir anahtarla kayıt satırlarına ekleriz. Burada da yürütülen mantık aynı. Düşünmemiz gereken o türden bir veriyi o türe ait her kayıt seti için değişmez ve tek bir kimlik bilgisi ile ilgili tablosuna eklemek. Ardından o tablolarda üyemize ait değişmez olan biricik kimlik(id) bilgisini de ilgili tabloların ilgili satırlarına işlemek.
Böylece verileri çekerken de ilişkisel veri yapısı mantığından hareketle her tablonun kayıt satırlarındaki değişmez biricik numaraları eşleştirerek üyemize ait kitap veya film bilgilerine erişmek kalıyor bize.
Bu tür işlemleri sql ile basitçe Joinler(left, alias, as vs. gibi anahtar kelimeler ) kullanarak kısaltma yoluna gideriz.
Burası da tasarladığın kodlarda ilişkili olacağından senin düşünce sistemine kalıyor.
Ali hocam' da Kadir Can' da mantığını belirtmişler ben biraz daha açayım istedim.
Basit bir uyeler tablomuz olsun;
uyeNo | adi | soyadi
001 |Kadir | Can
002 | Can |Alpay
003 | Salih | Dinçer
Veriyi girerken kullandığımız basit bir sql sorgusu:
INSERT INTO uyeler (adi, soyadi) VALUES ('Ali', 'Çehreli');
Açıklaması ; Veri tabanımda bulunan uyeler adlı tablomun adı ve soyadı sütunlarına ad değeri için Ali, soyad değeri için Çehreli verilerini ekle.
İşleyiş; Bu komut ile uyeler tablosunda uyeNo sütunu otomatik olarak artan yapısı ile kimlik bilgisi için yeni kayıt seti açılır ve 004 olarak numaralandırılır. 004 adlı satırda adi sütununa Ali bilgisini, soyadi sütununa Çehreli bilgisini ekler.
Veriyi çekerken kullandığımız basit bir Sql sorgusu:
SELECT adi, soyadi FROM uyeler ORDER BY adi;
Açıklaması; veri tabanımdaki uyeler adlı tablomdan tüm üyeleri adı sütununu alfabetik sıralamaya sokarak ad ve soyad biçiminde listele.
İşleyişi; bu sorgu ile içeriğinde bir çok tablo bulunan veri tabanımızın uyeler adlı tablosuna erişilir. Tüm uyelerin ad ve soy ad verileri ad sütunundaki veriler alfabetik olarak küçükten büyüğe doğru sıralanır ve sıralı liste kullanıcıya verilir.
Başka bir örnek daha;
SELECT * FROM uyeler WHERE adi = 'Salih' OR soyadi='Dinçer';
Açıklaması; Uyeler tablomuzda bulunan tüm verileri al, adı Salih'e veya soyadı Dinçer'e eşit olan kayıtları listele.
İşleyişi; Bu sorgu veri tabanımızın uyeler tablosuna eriştiğinde SELECT' ten sonra koyduğumuz yıldız işaretinden ötürü tüm kayıtları bir alanda toplar, önce adi sütununda adın Salihe eşit olduğu satırları arar, bulduğunu listeler, bulunamayan kayıt varsa soyadi sütununda Dinçer adlı kayıtların olup olmadığına bakar. Bulduğunu listeler.
İşinize yarayacağını umaraktan,
mert
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]