Tablo tasarımı ve ilişkilendirme

1 2 3 4
14/09/2011, 11:47

alitaha

hocam eline sağlık çok teşekkür ederim
18/09/2014, 21:31

fanibiri

Hocam selamlar peki TC No üzerine ilişki yapmak istersek ? Örneğin Vatandas tablosunda TC alanı ile Firmalar tablosunu ve sikayetler tablosu ile hem firmaları hemde vatandasi TC nosu ile ilişkilendirmek istersem ne yapmam gerekir ?
3 Adet tablom var vatandas tablosunda TC benzersiz. Firmalar tablosunda firmakod benzersiz ve sikayetler formunda ise sikayet id benzersiz.

Vatandaş ile Firmayı ve sikayetleri ayrıca firma tablosu ile de sikayetleri ilişkilendirmek istiyorum.

Yani vatandaş TC sizini girdiğimiz zaman firma ve firma hakkında ki şikayetleri almak ve girmek istiyorum.
Yardımcı olursanız sevinirim. Saygılar.
21/07/2015, 12:38

kasapçı

(17/01/2011, 17:31)Hayri16 yazdı: Access'in temeli bildiğiniz gibi tablolardır. Bütün işlemler Tablolar ve Alanları üzerinde yapılmaktadır.
Bu nedenle tabloların programın başından iyi tasarlanması işlerimizi kolaylaştıracağı gibi
programdan alacağımız verimi de arttıracaktır. Yeni başlayan arkadaşlarımız için bu olayı resimlerle
örnekleyerek anlatmaya çalışacağım.

Bir firmamız var. Bu firmada çeşitli görevlerde olan personel var. Bu personel zaman zaman belirli eğitim
seminerlerine , kurslara gidip geliyor. Personelle ilgili bu kurs kayıtlarını tutacak bir veritabanının
tablo yapısını tasarlamamız istendi.

Önce bizden istenen ne varsa onları yazalım:
Adı - Soyadı- TCNo - babaadı- Doğum tarihi- İli - Yabancıdili - Görevi- Kurs adı- Başladığı tarih -
Bittiği tarih. Tüm bu bilgilerle elimizde şu yapıda bir tablo olur.



Bu tablodaki verilerimizde şimdilik bir sorun yok gibi görünüyor. Ama personel Bir başka kursa gitmek
istediğinde , bu tablo yapımıza göre şöyle bir kayıt eklememiz gerekecek:



Bir çok bilgiyi tekrar girmek zorunda kaldık. Düşünün bu şekilde yüzlerce kayıt ekleyeceğimizi... O halde
bizim bu şekilde ki bir tablo yapımız pek işlevsel değil. O zaman ne yapalım?
Tablomuzun "hareketli parçalarını" yani değişebilir verileri ana tablomuzdan ayıralım.
Bu durumda elimizde şöyle bir tablo kalır.



Şimdi bu tabloya baktığımızda bazı alanların sıkça tekrarlandığını görüyoruz. Nedir bu alanlar. İli ve
yabancı dil alanları. Nasıl daha kolay yaparız? Bu alanları ayrı tablo yapıp, verileri oradan bu
tabloya ilşkilendirerek. Önce bu iki alanı ayrı tablo yapalım:





Sonra ana tablomuzdaki ili ve yabancıdili alanlarının veri tipini sayı haline getirip adlarını da ilno ve
dilno yapıyoruz. Buralara il ve dil tablosundan ilgili kaydın id numarasını aktaracağız.
Sonuçta tablomuz şu hale geliyor:



Buradaki işlemimizi tamamlamış gibiyiz. Şimdi gelelim hareketli olan bölümümüze.



Durum bu şekilde idi.
Bunu da bir tablo haline getiriyoruz. Buna bir de kisino diye sayısal alan ekliyoruz. Neden? Bu
bilgilerin hangi personele ait olduğunu bilmek için. kisino alanına , bu bilgiler hangi personele aitse onun
id sini yazacağız. Şimdi durum aşağıdaki gibi oldu:



Görüldüğü gibi burada da tekrarlanan alanlar var. Bunlar görev ve kurs alanları. Daha önce yaptığımız
gibi bu alanları da tablo haline getirip , bu tabloyla ilişkilendirelim.





Yine bu bağlantı kuracağımız alanları sayısal alan haline getirip , tablolardan ilgili kayıtların id
lerini aktaralım.



Tablomuzun yapısı bu şekilde oldu. En başa gelip o 2 personeli eklemek istediğimizde
yapacağımız iş sadece aşağıdaki gibi olacaktır.



Ne kadar kolaylık değil mi?
Bundan sonra istediğimiz işlemleri, sorguları bu şekilde daha güvenli, daha verimli ve daha kısa zamanda
yapmamız mümkün.
Tablolarımızın ilişki durumu da şöyle:



Son olarak:
1- Tablolarımızda değişebilen alanlarını ayrı tablo.
2- Tekrarlanan alanlarını ayrı tablo yapmalıyız.
3- Tablo ve Alan isimlerinde mümkün olduğu kadar (maalesef) Türkçe karakter ve boşluk kullanmamalıyız.
4- Otomatik sayı alanı mutlaka tablolarımızda olmalı.

Umarım yararlı olmuştur.
İyi çalışmalar.

Sayn Hayri16;
Tablonun birden fazla bilgi içermesindeki mahsur nedir? İlişki kurmak yerine tüm veriler bir tabloda olsa ne olur? Sorun sadece yeni kayıt yaparken bazı eski verilerin tekrarlanması olayı mı? Yazarken önceden tekrarlanan veriler geliyor zaten çok mühim bir sorun değil şayet başka bir husus yoksa...
22/07/2015, 19:47

atoz112

Sayın kasapçı,

tablo ilişkilendirmesinin kullanılmak istendiği durumlarda;Ana tablo içerisinde değişken niteliğe sahip alanlar mevcutsa,bu alanların ayrı bir tabloda yer alıp ana tablodaki kendi tanımlamalarının olduğu sütunda ( alanda) yine kendi için oluşturulan tablodan sadece id değerlerini almak sureti ile,ana tabloya kaydedilmesi,kullanım açısından daha çok tercih edilmektedir.Bunun da iki nedeni vardır.

1) Ana tabloda ilgili alanlarda sadece id değerleri kaydedilerek hem tablodaki yer işgal etme miktarı az olacaktır hem de tablonun kapasitesini artırma konusunda verimli bir kullanıma yol açacaktır.

Örneğin;bu konuda hazırlanan uygulamaya örnek teşkil eden senaryoya göre bahsedilecek olunursa, kurs adı kategorisinde yazılı Teknoloji Çözümleme ifadesi 19 karakter.bu ifadenin birçok kayıt için yazıldığı düşünülürse,bu alanda sürekli 19 karakter olacak.bu da,hayli kayıt olacağı düşünüldüğünde tablonun alacağı miktarda artış demektir.

fakat bunun yerine,bu kurs adı uygulamadaki gibi ayrı tabloda bulundurulup sadece id değeri alınıp bu id değeri ana tablodaki kendi alanında gösterilse,o zaman;sadece 2 karakter kadar olacaktır.bir de,hayli kayıt durumunda sadece iki karakterlik olduğunu düşündüğünüzde bu alan için,tablo kapasitesinin yüksek olmadığı da görülecektir.elbette ki,bu istisnai uygulamalarda farklılık oluşturacaktır.bu bahsedilen durum,sadece genel uygulama baz alınarak yapılmıştır.

2) Ayrı tabloya bölümleme yapılması ile,bir diğer kazanım da;uygulamada sadece ana tabloya yük bindirmeyip,iş yükünü bu değişkenlerin alınabileceği tablolara yaymak sureti ile,hem performansın verimli olması hem de bu iş yükünün paylaşılması ve dengelenmesi sağlanır.

Bu işlemlerin tercih edilmesine bir diğer neden olarak da,aslında şu da dahil edilebilir,bu husus için.uygulama içerisinde kullanılmak istenebilecek sorguların (doğru bir yapılandırma olması şartı ile) çalıştırılarak elde edilmek istenen sonuçların veya raporların daha hızlı oluşturularak yoğun bir bekleme durumuna mahal vermemesini de sağlamaktadır.

Bütün bun hususlara,şöyle bir örnek vermek ile sanırım daha iyi bir fikir edinilmesi veya anlaşılması sağlanacaktır.bir pazar alışverişinde,bütün poşetleri tek elimiz ile taşıyıp çabuk yorulmaya yol açmaktansa,iki elimize eşit olabilecek bir tasnif ile ağırlığı ve taşımayı paylaşım sonucu yayarsanız,hem çabuk yorulmayı azaltmış olursunuz hem de ağırlığı dengelemiş olursunuz.vücudu yormamak da cabası tabi.işte,konu sahibinin bahsini yaptığı anlatım bu kolaylığı sağlamak için.

Pazar benzetme örneğine bir atıf olması için de,şöyle bir soru akla gelecektir:peki,ya pazar arabası kullanmak istenirse?...bu da,ileri düzey uygulama geliştirmeden geçer...
Saygılar.
23/07/2015, 16:19

kasapçı

Sayın Atoz112;
Cevabınız için teşekkürler. Kaydın mükerrer alanlarının karakter olarak veri artışına neden olabileceği benimde aklıma geldi ama günümüzde depolama hafızası düşünüldüğünde text verisinin image ve videolar yanında yer kapladığı söylenemez. Pazar alışverişi örneğinde; evde salata yapmak istiyorsunuz, ama salatalık bir poşette, marul başka bir poşette, soğan ve domates vs. başka poşetlerde. Bunların hepsini açıp, bulup tezgaha koymak emek kaybıdır. Tablo alanlarını bölüp ayrı ayrı ayrı tablo yapıp ilişkilendirmek hususunu böyle değerlendiriyorum. Bu işin daha verimli daha faydalı olabileceği hususunu kafamda oturtamadım bir türlü. Verilerin hepsinin bir tabloda olduğu durumda mükerrer alanlar olabilir ama kullanıcı zaten tablo ile ilgilenmiyor form, sorgu ya da rapordan bakıyor verilere. Tabloları bölüp sonra ilişkilendirmenin faydasını/mantığını çözebilmiş değilim. Tüm acil durumlar için 911 i aramak varken tıbbi acil için 112'yi, adli yardım için 155/156'yı, yangın için 110'u aramak gibi bir şey. Haksızsam siz söyleyin.
23/07/2015, 17:56

atoz112

Sayın kasapçı,

1)       
Alıntı:günümüzde depolama hafızası düşünüldüğünde

text verisinin image ve videolar yanında yer kapladığı söylenemez.

ifadeniz için;yorumları yapılan ve bahsi geçen bu konuda text dosyası değil,hazırlanan uygulama üzerinedir.dolayısı ile,teferruatlı ve verileri açısından da yoğun olan bir uygulamanın kaplayacağı miktar değerinin artımını azaltmak ya da az yer kaplamasını sağlamak adına paylaşılan bilgilendirmeler ve anlatımları içermektedir.

2)       
Alıntı:Pazar alışverişi örneğinde; evde salata yapmak istiyorsunuz, ama

salatalık bir poşette, marul başka bir poşette, soğan ve domates vs.
başka poşetlerde. Bunların hepsini açıp, bulup tezgaha koymak emek kaybıdır.

ifadeniz için;bu bahsettiğiniz şu örneğe benzetilebilir.bir ev inşa etmek istiyorsunuz fakat öyle ayrı odalar yapmak emek kaybı deyip,tüm odaları bölme iç duvarlar ile ayırmaksızın iç içe inşa etmek gibi.

İçeriğinde farklı ürünler yer aldığı saydığınız her bir pazar poşetini ayrı olarak buzdolabına (sizin deyiminiz ile tezgaha) yerleştirip,gerektiğinde tercih edilenleri yerlerinden alıp kullanmak durumu söz konusudur.buna da örnek olarak,uygulamada istenilen raporlama için sorgu kullanılarak hangi tablolardan hangi alanlar seçilerek oluşturulmak istenen sorgunun edinilmesi demektir.dolayısı ile de,emek harcanmadan istenilen sonuçlar elde edilemez hali ile.

Ayrıca,pazar örneğinin verilmesinin tek nedeni,önceki açıklamada da belirtildiği üzere,SADECE;sarf edilen gücün dağıtılarak yayılması adına,bir tabloya uygulanan yoğunluğun ilişkilendirilebilecek diğer tablolara dağıtılarak ileride oluşabilecek yoğunluğun veya miktar aşımının aza indirgenmesini sağlamak içindir.

3)       
Alıntı:Tablo alanlarını bölüp ayrı ayrı ayrı tablo yapıp ilişkilendirmek hususunu

böyle değerlendiriyorum. Bu işin daha verimli daha faydalı olabileceği
hususunu kafamda oturtamadım bir türlü.

ifadeniz için;kullandıkça ve kayıt yoğunluğu hissedilebilir nitelikte oluşuma geldiğinde aradaki farkı ya da diğer bir ifade ile gerekli olup olmadığını görmek adına,teferruatlı bir içeriğe sahip olabilecek halde iki adet uygulama geliştiriniz.biri,sizin “emek kaybı” diye niteleyip gereksiz bulduğunuz hali ile tek bir tablodan ve karakter uzunluğu hesaba katılmaksızın olduğu gibi ya da düşünüldüğü gibi hazırlayınız.bir diğerini de,bu konuda bahsi geçtiği gibi hazırlayınız.sorgu da oluşturunuz ve epey bir kayıt durumu sağlayınız.tablo ve uygulama miktarının epey yüksek olmasını sağlayınız.çünkü,anca fark edilebilir düzeylere gelinmesi gerekir ki,buna bir inceleme imkanı sunabilsin.zaman sonra,denemeleriniz ile sonuçları bir konu açıp paylaşıma sunarsınız.değerlendirmeler o zaman daha geçerli olur.katılım da artar belki de.

4)       
Alıntı:Verilerin hepsinin bir tabloda

olduğu durumda mükerrer alanlar olabilir ama kullanıcı zaten tablo ile
ilgilenmiyor form, sorgu ya da rapordan bakıyor verilere. Tabloları bölüp
sonra ilişkilendirmenin faydasını/mantığını çözebilmiş değilim.

ifadeniz için;sizin tabiriniz ile kullanıcıların baktığını belirttiğiniz o formların ve sorguları ya da raporların daha verimli,daha ulaşılabilir,daha doğru çalışabilmesi adınadır zaten,bu konuda bahsi geçen hususlar.iyi bir tablo yapılandırması temel şartı olmakla birlikte,otomatik sayı katkılı diğer tasnif edilebilecek tablolar ile ilişkilendirilmesi sonucunda,kullanıcının muhatap kılındığı ara yüz üzerinde bu sağlam yapılandırma sonucunda farkına dahi varmaksızın rahat bir kullanım sunulmaktadır.

5)       
Alıntı:Tüm acil durumlar için 911 i aramak varken tıbbi acil için 112'yi,

adli yardım için 155/156'yı, yangın için 110'u aramak gibi bir şey.

ifadeniz için;

a) Henüz bu numaraya ya da tam anlamı ile tek numaraya (pilot bölge denemeleri hariç) geçilmediği için,sadece yabancı filmlerden kalma bir numaradır.

b) Varsayılsın ki,911 kullanılıyor.bu numara arandığında ve gecikme yaşandığında gerek ister istemez konuya dair kullanılan eski numara aranmak istenecektir ve gerekse de bu gecikmeden dolayı serzenişte bulunulacaktır.sorunsuz bir alt yapı organizasyonunun ve görevlilerin de sorumluluk bilinci ile doğru yönlendirme başarıları temennisi ile.

c) Acil servise getirilen ve nesi olduğu tam anlatılamayan ya da anlaşılamayan bir hastanın sorununu (şikayetini) bulmak için,çeşitli testler (tetkikler) yapılır.hele ki,günümüzde bazı hastalıkların ilk çıkış belirtileri neredeyse benzer özelliklere sahip olduğu da düşünülürse;bazı işlemlerin denenmesi söz konusu olacaktır doğal olarak (işinin uzmanı ve tecrübe sahibi olanlar istisna elbette).

Bu durumda ne olacaktır.şu durumu değerlendirmeye alıp şunu deneyelim ya da bunu deneyelim gibi düşünce ya da davranışlarla hastanın sorununun ne olduğu bulunmak istenecek.bu da sizin tabiriniz ile,”emek kaybı”,hatta zaman kaybı desek daha doğru.

Fakat,bunun yerine;hasta getirildiğinde,tekerrür eden bir rahatsızlık ise bunlar daha önceki raporları veya sonuçları,bunlar da kullandığı ilaçları gibi bilgilendirmeler veya belgelendirmeler ile sunulabiliyor ve anlatılabiliyorsa,o zaman;müdahale edilmesi ve sorunun kontrol altına alınması geçerli olacaktır böylece.”emek kaybı” da olmayacaktır hali ile.

Son olarak,aslında,bu konuda bahsi geçen anlatıma vesile olan husus;daha verimli ve rahat,daha kullanışlı bir uygulama hazırlamak adınadır.sonuçta,bu bir ders anlatımıdır.konuyu inceleyeceklerin takdirine ve tercihine sunulmuştur.buradaki sonuçları ancak deneyip gözlemledikçe farkına varabilir ve bir fikir elde edebilirsiniz.denenmeyen ve ancak üzerinde konuşulan bir konuda yorum yapmak sadece hem yetersiz hem de haksız kalınmaya neden olur.en iyi ve doğru kazanım;denendikçe,pratiği yapıldıkça ve çıkan sonuçlara göre durum değerlendirmeleri yapıldıkça elde edilebilir.

Bir kez daha hatırlatmak adına,belirtmek için;bir uygulamada olması gereken


a) iyi bir tablo yapısı olması için doğru tablo ve alan adı tanımlama ve
Türkçe karakter ve boşluk kullanmaksızın tanımlama

b)Doğru veri türü belirleme

c) Olmazsa olmaz,mutlaka otomatik sayı bulundurma
(sorgulamalarda ve raporlamalarda gerekliliği anlaşılacaktır)

Elbette,bunlar sadece sağlam bir temel olmasına yönelik önerilerdir.bilginize.

İyi çalışmalar,saygılar.
1 2 3 4