Veritabanının mantıksal tasarımına veritabanı şeması adı verilir. Tablolar ve onların nitelikleri; veritabanı şemasını oluşturur.
Veritabanı şemalarını iki ana grup altında ortaya koymak mümkündür.
İki tablo birbirleriyle dış anahtar kullanılarak ilişkilendirildikten sonra, bu sınırlamalara dayanarak, iki tablo arasında silme ve güncelleştirme işlemleri otomatik olarak yerine getirilebilir.
Örneğin; PERSONEL ve BÖLÜM isimli iki tabloyu göz önüne alalım.
PERSONEL tablosunun Bölüm No isimli sütunu, BÖLÜM tablosuna ilişkin bir dış anahtar olarak tanımlanmıştır. Bu tür bir tanım beraberinde ilişkisel bütünlük özelliklerini getirecektir.
BÖLÜM isimli tablodan bir satırı, örneğin 10 numaralı bölümü silmek istiyoruz. Bu satır silindiğinde, PERSONEL tablosunda da aynı satır ile ilgili tüm kayıtlar otomatik olarak yok olacaktır.
Veri Değeri Sınırlaması
Tablonun herhangi bir sütununda yer alacak verilerin hangi değerlere sahip olabileceği konusunda sınırlamalar getirilebilir.
Örneğin, bir değerin NULL olamayacağı belirtilerek bir sınırlama yapılabilir.
Örneğin, PERSONEL’in şehir içi telefon numarasının 7 haneden fazla olmasını önlemek için böyle bir sınırlama konulabilir.
Benzer biçimde, bir öğrencinin doğduğu ilin trafik kodunun 2 haneden fazla olamayacağı ve 1 ile 81 rakamları arasında olabileceği biçiminde sınırlamalar getirilebilir.
Örneğin, PERSONEL tablosu için şöyle bir sınırlama tanımlandığını varsayalım;
Bölüm numaraları 1-99 arasında, yani iki haneli olacaktır. Bu sınırlamaya uymayan bir giriş yapılmaya çalışıldığında, örneğin bölüm numarası 400 olan bir kayıt girilmeye çalışıldığında, sınırlama nedeniyle kayıt ekleme işlemi yerine getirilmeyecektir.
İşletme Kuralları Sınırlaması
Tablolar üzerinde işletme kurallarına dayalı sınırlamalar yapılabilir. Bu sayede, işletme kurallarına uygun olarak veri bütünlüğü söz konusu olabilir.
Örneğin, işletmenin muhasebe bölümünde programcı kadrosuna sahip eleman çalıştırmak anlamlı değildir. Bunu denetlemek gerekecektir.
Veritabanına bilgi girişleri esnasında, muhasebe bölümüne yeni PERSONEL kaydı eklemek gerektiğinde, söz konusu işletme kuralı, uygunsuz veri girişlerini engelleyecektir.
Bu tür sınırlamalar çoğunlukla uygulama programları aracılığıyla denetlenir.
Nitelikler Arası Bağımlılıklar
Nitelikler arasındaki fonsiyonel bağımlılıklar belirlenerek, şema üzerinde düzenlemeler yapılır.
Veri bütünlüğünün ve tutarlılığının sağlanmasında, nitelikler arasındaki bağımlılıkların kullanılması yararlı olabilir. Niteliklerin birbirleriyle olan bağımlılığı göz önüne alınmadan veritabanı tasarımının yapılması sorunlara neden olacaktır.
9 Ocak 2017 Pazartesi
Anahtar Sınırlamaları
Bütünlük sınırlamalarının sağlanmasında anahtarlar önemli rol oynar. Anahtar türü belirlenerek, bu sınırlamaların veritabanı yönetim sistemi tarafından otomatik olarak yapılması sağlanır. Söz konusu anahtarlar:
Birincil anahtar (primary key)
Dış anahtar (foreign key)
Birincil Anahtar Sınırlamaları
İlişkisel veritabanlarında bir tablonun benzer değerler içermeyen (unique) bir sütunu ya da birkaç sütunu birlikte birincil anahtar olarak tanımlanabilir.
Birincil anahtar, bir aday anahtardır ve söz konusu varlığın kayıtlarını en iyi biçimde karakterize eder.
Birincil anahtar tanımlandığında, birincil anahtar NULL değerleri veya birbirinin aynı değerleri içeremez biçiminde bir sınırlama konulabilir. Boş olan değerlere NULL adını veriyoruz. Bu sınırlamanın kontrolünü ise veritabanı yönetim sistemi yapacaktır.
Birincil anahtar tek bir sütundan oluşabileceği gibi, birden fazla sütunun birleşiminden de oluşabilir.
Bu durumda bileşik birinci anahtar’dan söz edilir.
Bileşik birincil anahtarın içerdiği değer tek olmalıdır. Ancak bileşik anahtarı oluşturan sütunların her biri çift değerler içerebilir.
Bununla birlikte birincil anahtarı oluşturan sütunların hiçbiri NULL değer içeremez.
Dış Anahtar Sınırlamaları
Bir dış anahtar, bir sütun veya çok sayıdaki sütunların birleşiminden oluşur.
Dış anahtar, başka bir tabloda yer alan bir birincil anahtarla eşleştirilir.
Dış anahtarın değeri bir birincil anahtar değeriyle eşleşmeli veya NULL olmalıdır. Eğer dış anahtar birincil anahtarın bir kısmını oluşturuyorsa, doğal olarak NULL değer içeremez.
Fiziksel Şema
Fiziksel şema, veritabanının fiziksel çevresi ile ilgili tanımları içerir. Örneğin, veritabanı bilgisayarda bir disk dosyası biçiminde yer alacaktır. Bu dosyanın disk üzerindeki adresi ve özellikleri ile ilgili tanımlar fiziksel şemayı oluştur.
Kavramsal şema ise tüm veritabanının mantıksal tasarımıdır. Veritabanına konulmasına karar verilen veriler arasındaki mantıksal ilişkilerin yapısının saptanması için veritabanı şeması oluşturulur. Bu şemada, veritabanında veri alanları, kayıtlar, dosyalar vb… gibi ne tür veri elemanlarının bulunacağı, veri elemanları arasındaki ilişkiler ve veritabanının yapısı hakkında bilgiler yer alır.
Veritabanı şeması veya bir başka deyişle kavramsal şema tasarlandıktan sonra, her bir uygulama için alt-şemalar hazırlanır. Örneğin, muhasebe uygulaması bir alt şemadır. Çünkü bu uygulama veritabanının tümü ile ilgilenmez.
Veritabanının doğru ve tutarlı biçimde çalışması ve işlemleri yerine getirmesi gerekir. Verinin doğru ve tutarlı olmasına "veri bütünlüğü" denir.
Veri bütünlüğünün sağlanması sonucunda, veritabanının eksik, yanlış, tutarsız ve çelişkili olmaması sağlanır.
Veritabanında, veri bütünlüğünü sağlamak için birçok yol bulunmaktadır. Bunlardan en önemlisi, bütünlük sınırlamaları (integrity constraints) adını almaktadır.
Bütünlük sınırlamaları, veritabanı yönetim sistemi veya uygulama programları tarafından tanımlanır.
Sözü edilen sınırlamalar; kullanıcı tarafından yapılması gereken ekleme, silme ve güncelleştirme işlemlerinden önce bir denetim yapılmasına neden olur.
Bu denetim sonucunda, sadece sınırlamalara uyan işlemlerin yapılmasına izin verilir. Diğerleri reddedilir.
İlişkisel Model
İlişkisel model (relational model), günümüzde en yaygın biçimde kullanılan bir veritabanı modelidir. Ticari veritabanı yönetim sistemlerinin hemen hemen tümünde bu model kullanılmaktadır.
İlişkisel model, varlıklar arasındaki bağlantının, içerdiği değerlere göre sağlanması esasına dayanır. İlişkisel model, varlıklar arasında oluşan karmaşık ilişkileri basite indirgemek amacıyla geliştirilmiştir.
Bu yaklaşımda, veri tabanındaki tüm ilişkiler tablolar biçiminde tanımlanmaktadır.
İlişkisel Veritabanı
İlişkisel veritabanı, her biri özel isimlere sahip tablolardan oluşur. İlişkisel veri tabanında her bir tablo bir varlığa veya bir ilişkiye karşılık gelmektedir.
Tablonun sütunları nitelikleri; satırlar ise bu niteliklerin değerlerini ifade eder. Her bir satır bir “kayıt” olarak da düşünülebilir. Anahtar alan, tablonun tanımlayıcısıdır.
Tabloların Özellikleri
İlişkisel veritabanı içinde yer alan her bir tablo;
Sütunlardan oluşur ve her bir sütunun ayrı bir adı vardır.
Her bir sütun, aynı niteliğin tanımlandığı aynı etki alanının (domain) belirlediği değerleri içerir.
Her bir satır birbirinden farklıdır.
Satırların ve sütunların sırası önemsizdir.
İlişkisel model, varlıklar arasındaki bağlantının, içerdiği değerlere göre sağlanması esasına dayanır. İlişkisel model, varlıklar arasında oluşan karmaşık ilişkileri basite indirgemek amacıyla geliştirilmiştir.
Bu yaklaşımda, veri tabanındaki tüm ilişkiler tablolar biçiminde tanımlanmaktadır.
İlişkisel Veritabanı
İlişkisel veritabanı, her biri özel isimlere sahip tablolardan oluşur. İlişkisel veri tabanında her bir tablo bir varlığa veya bir ilişkiye karşılık gelmektedir.
Tablonun sütunları nitelikleri; satırlar ise bu niteliklerin değerlerini ifade eder. Her bir satır bir “kayıt” olarak da düşünülebilir. Anahtar alan, tablonun tanımlayıcısıdır.
Tabloların Özellikleri
İlişkisel veritabanı içinde yer alan her bir tablo;
Sütunlardan oluşur ve her bir sütunun ayrı bir adı vardır.
Her bir sütun, aynı niteliğin tanımlandığı aynı etki alanının (domain) belirlediği değerleri içerir.
Her bir satır birbirinden farklıdır.
Satırların ve sütunların sırası önemsizdir.
Ad-lib testleri
Ad-lib test ler doğaçlama olarak yapılan rast gele sayılar ile programın test edilmesini sağlar.
Ad-lib testleri tam olarak sistem ile ilgili bir şey ispat edemesede. Genel anlamda kullanılabilrilike ile ilgili yapılan testlerdir.
Özet
Veri girişleri sistem için çok önemli noktalardır.
Güvenlik ve sistemin doğru çalışması açısından.
Dış dünyadaki veriler ,belli bir formata göre sistem içerisine alınmalıdırlar.
Çöp olarak belirlenen verilerin sistem içerisine alınmaması için anlık kontroller yapılmalıdır.
Hata kontlerleri sistemin en alt noktasından başlatılmalı ve her seferinde tek bir hata oluşturularak kontrol edilmesi gerekmektedir. Sonrasında ise hata sayıları arttırırlarak test işlermleri gerçekleştirilmelidir.
Onaylama testleri söz dizimini kapsayıcı şekilde olamlıdır.
Uç değerler ve sınır değerler test edilmesine öncelik verilmelidir.(Sınırlayıcıları düşünün.)
Otomatik test programları çalıştırılarak testler yapılmalıdır.
Anlık yapılan Ad-lib testleri ile sistemin durumu incelenebilir.
Değer üreteçleri ile programa değerler verilerek programın düzün olarak çalışıp çalışmadığına bakılmalıdır.
Söz dizimi Test Tasarım Tehlikeleri
Program dizannının nasıl olacağını bilmek sizin gereksiz “case” ler ile ilgilenmenizi ortadan kaldıracaktır.
Yapısal testti göz ardı etmeyin. Sözdizimi testtini yapı içerisinde gerçekleştirin.
Yapısal test ile söz dizim testtini birbirine karıştırmak kolaydır dikkat etmek gerekir.
Sözdizimi Test Sürücüleri
Test caseler genellikte bir data olarak saklanır. Bunun için bir program kullanılabilir.
Gereksiz verilerin olduğu “çöp” datalardan oluşan bilgileri bu hazırladığınız test caseleri içerisine almayın.
Tasarım Otomasyonu: İlkel Yöntem
Doğru bir giriş dizeleri kümesi kapsayan belirtmek ,
için bir kelime işlemci kullanın.
Arama değiştirme alt string değerlerini kullanın.
Tasarım Otomasyonu: Rastgele StringÜreteçleri
Rasgele string içeren diziler ile programa değer vererek programın çalışma durumu değerlendirin.
( Kaba güç ile programı zorlama)
Verimlilik, Eğitim, Etkililik
Söz dizimi testi programları kullanan kişiler için büyük bir güven kaynağı verir.
Yazılım ekibi içersinde yeni başlayan stajyerlere verilen kolayca bir eğitimi sonrası gerçekleştirile bilir.
Busayede stajer saatte 20-30 test durumları üretebilir.
Sözdizimi test acemi bir tester için inandırıcı mükemmel bir yoldur:
Bu sayede testtin sonsuz bir süreç olduğunu.
Hangi testlerin önce yapılması gerektiğini bilir.
Test Strateji
(Azdan çoğa yaklaşımı)
Girdi dizesinin tüm diğer bileşenleri doğru tutarak, her seferinde bir hata oluşturun.
Testleri komple bir set olarak belirleyin bu işlemin ardından. İkili üçlü hata setleri ile 1. adımdaki aşamayı tekrarlayın...
Her seferinde bir düzeye odaklanın bu odak seviyesini başlangıçta düşük tutarak adım adım yükseltin.
Örnek1 Telefon numarası
phone_number ::= exchange_part number_part
Boş değer atama
İlk kısmını değiştirme.
İkinci kısmı değiştirme.
İki kısmı birden değiştirme.
Önce birinci kısmı değiştirme ardımdan ikinci kısmı değiştirme.
Önce ikinci kısmı değiştirme ardından birinci kısmı değiştirme.
Yetersiz karakter girilmesi
Çok fazla karakter girilmesi.
Sayısal olmayan karakter girilmesi.
Kontrol karakterlerinin girilmesi.
Özel karakterler girilmesi.
other_digit ::= 2 | 3 | 4 | 5 6 | 7 | 8 | 9
special_digit ::= 0| 1 | 2 | 5
Sınırlayıcı Hatalar
Sınırlayıcı karakterler bir karakter bittikten sonra diğer karakter arasında kullanılan karakterdir.
Eksik. örnek., (x+y
Yanlış. örnek., (x+y]
Fazla. örnek., (x+y))
Söz dizilimi kaynağı
Tasarımcı Test İşbirliği
Kılavuzlar
Ekranlar
Tasarım Belgeler
Prototip
Programcı Röportajlar
Hacking
Girdi dizesinin tüm diğer bileşenleri doğru tutarak, her seferinde bir hata oluşturun.
Testleri komple bir set olarak belirleyin bu işlemin ardından. İkili üçlü hata setleri ile 1. adımdaki aşamayı tekrarlayın...
Her seferinde bir düzeye odaklanın bu odak seviyesini başlangıçta düşük tutarak adım adım yükseltin.
Örnek1 Telefon numarası
phone_number ::= exchange_part number_part
Boş değer atama
İlk kısmını değiştirme.
İkinci kısmı değiştirme.
İki kısmı birden değiştirme.
Önce birinci kısmı değiştirme ardımdan ikinci kısmı değiştirme.
Önce ikinci kısmı değiştirme ardından birinci kısmı değiştirme.
Yetersiz karakter girilmesi
Çok fazla karakter girilmesi.
Sayısal olmayan karakter girilmesi.
Kontrol karakterlerinin girilmesi.
Özel karakterler girilmesi.
other_digit ::= 2 | 3 | 4 | 5 6 | 7 | 8 | 9
special_digit ::= 0| 1 | 2 | 5
Sınırlayıcı Hatalar
Sınırlayıcı karakterler bir karakter bittikten sonra diğer karakter arasında kullanılan karakterdir.
Eksik. örnek., (x+y
Yanlış. örnek., (x+y]
Fazla. örnek., (x+y))
Söz dizilimi kaynağı
Tasarımcı Test İşbirliği
Kılavuzlar
Ekranlar
Tasarım Belgeler
Prototip
Programcı Röportajlar
Hacking
Kaydol:
Yorumlar (Atom)