9 Ocak 2017 Pazartesi
Bubble Sort Programının Algoritması
1 for (j=1; j<N; j++) {
last = N - j + 1;
2 for (k=1; k<last; k++) {
3 if (list[k] > list[k+1]) {
temp = list[k];
list[k] = list[k+1];
list[k+1] = temp;
4 }
5 }
6 }
7 print(“Done\n”);
Üst Alma Programının Algoritması
1 scanf(“%d %d”,&x, &y);
2 if (y < 0)
pow = -y;
else
pow = y;
3 z = 1.0;
4 while (pow != 0) {
z = z * x;
pow = pow - 1;
5 }
6 if (y < 0)
z = 1.0 / z;
7 printf (“%f”,z);
2 if (y < 0)
pow = -y;
else
pow = y;
3 z = 1.0;
4 while (pow != 0) {
z = z * x;
pow = pow - 1;
5 }
6 if (y < 0)
z = 1.0 / z;
7 printf (“%f”,z);
White box Testi
Test kodun çalıştırılmasına dayanır.
Bu testin temel amacı, yazılımın cümlelerinin, kodun izleyebileceği bütün yolların, koşul cümlelerinin ve veri akışının doğruluğunun onaylanmasıdır.
Test kodun çalıştırılmasına dayanır.
Bu testin temel amacı, yazılımın cümlelerinin, kodun izleyebileceği bütün yolların, koşul cümlelerinin ve veri akışının doğruluğunun onaylanmasıdır.
Akış Kontrol Testi
Akış Kontrol testi(Control-flow testing): Yapısal bir test stratejisidir. Programın akışı üzerinden yapılmaktadır.
Akış kontrol testleri, veri akışı üzerinde sorun olması düşünülen kısımlarının alınıp test edilmesine dayanmaktadır.
Seçilen yollar üzerinde belirlenen test kümesi ile test işlemi gerçekleştirilir.
Her bir verinin program içerisindeki değerleri gözden geçirilir ve bu verilerin doğru çalışıp çalışmadıklarının belirlenmesi için veri yolları seçilir.
Motivasyon
Yeni yazılımlar için en çok kullanılan unit test yöntemidir.
Yapısal ve Object Oriented diller ile geliştirilmiş programlardaki hataları önemli ölçüde azaltmaktadır.
Akış grafiği üç temel ilkeden oluşmaktadır.
Program içerisinde if yada case gibi(end if, end loop, goto label,vb) program akışını farklılaştıran kod parçaları bulunmaktadır.
Süreç blokarı ise kesintisiz kodlardır. Herhangi bir şekilde akışı değiştirmezler.
Örnek Veritabanı Çalışması
Problem: Bahçe bitkileri satan bir firmaya ait bir veritabanı tasarlanmak istenmektedir. X firması satmakta olduğu ürünleri, farklı birçok firmadan temin etmektedir. Satılan her ürün belli bir kategoride toplanmaktadır. X firması gelen sipariş üzerine çalışmaktadır. Dolayısı ile sistemden alışveriş yapmak isteyen her müşteri, öncelikle sisteme kaydedilmektedir. Her müşterinin, mutlaka bir müşteri numarası olmalıdır. X şirketinin ürünlerinin müşteriye iletilmesini sağlayan çeşitli nakliye firmaları vardır. Bu nakliye firmaları, ürünlerin müşteriye iletilmesini sağlamaktadırlar. X firmasında birçok çalışan personel vardır. Sipariş verildiğinde hangi siparişi hangi personelin aldığı bilinmek istenmektedir. X firmasının satış yapabilmesi için deposunda çeşitli ürünleri stokta tutması gerekmektedir. Bu nedenle firma ürünlere ait bilgileri de saklamak zorundadır. Her ürüne bir ürün kod numarası verilmektedir. Bu ürünlerin tedarik edildiği satıcı firma bilgilerinin de sistemde kayıtlı olması istenmektedir.
Bir önceki slaytta verilen probleme ilişkin kavramsal modeli dikkate alarak;
Varlık – ilişki diyagramını çiziniz.
Normalizasyon işlemini yapınız.
SQL Server üzerinde bu veritabanını oluşturarak, tablolar arasındaki ilişkileri belirtiniz.
Normalisasyon
Veritabanı Tasarım Aşamaları
İlişkisel veritabanının tasarlanması aşamasında, verinin tekrarlanmasını, veri kaybını veya veri yetersizliğini önlemek için normalleştirme işlemi uygulanır. Normalleştirme teorisi normal form kavramına dayanır.
Normalleştirme, bir veritabanında veri kayıplarını engellemek, verinin tekrarını azaltmak, silme, güncelleme ve ekleme işlemlerinde ortaya çıkan zorlukları en aza indirmek için yapılan işlemler topluluğudur.
İlişkisel bir veritabanı oluşturmak için normalleştirmeyi çok iyi bilmek gerekir. Normalleştirmenin amacı, bir veritabanına etkinlik kazandırmaktır.
Özet olarak normalizasyonun amacı, veritabanının performansını en üst düzeye getirmektir.
Normalizasyon işlemi bir veritabanı tasarlanırken başlı başına bir işlemdir.
Normalizasyon gerçekleştirilirken bazı kurallar göz önüne alınarak gerçekleştirilir. Bu kurallar, uyulması kesinlikle zorunlu kurallar değildir.
Bir satırda yalnızca bir tek benzer bilgi bulunur. Örneğin, kişinin okul bilgileri Okul1, Okul2, Okul3 diye tutulmaz. Bunlar ayrı bir tabloda tutulmalıdır.
ÖNEMLİ: Verileri virgül veya bir başka karakter ile ayırıp aynı alana girmek ve daha sonra program içerisinde bu değerleri ayırmak ilişkisel veritabanının doğasına terstir.
Bir tablodaki tüm alanlar, o tablonun Primary Key (PK) alanına bağlı olmak zorundadır. Yani Kişi tablosu için konuşursak, Kişi tablosunun PK’sı yani indekslendiği alan, KisiNo alanıdır.
Örneğin KisiNo’su 1 olan bir kayıtta, KisiNo’su 2 olan birisinin bilgileri bulunamaz. O zaman karışıklık meydana gelir. Ayrıca, Kisi tablosunda Kisi’ye ait olmayan veriler tutulamaz.
Bu kural doğal olarak ilişkide bulunulacak her tablonun PK alanının bulunması gerekliliğini de beraberinde getirir. Primary Key alanı olmazsa performanslı bir yapıda olmaz.
Tabloları tutarlı bir şekilde mümkün olan en ufak boyutta (alan sayısı olarak) tutmak gereklidir.
Tablodaki diğer alanları başka tablolara ekleyerek tablolar arasında ilişkiler kurulmalıdır.
Bir PK ile PK olmayan alanlar arasında bire çok ilişki olmamalıdır.
Örneğin kişimizin çalıştığı yerlerin tutulduğu bir tablo daha olsun. Aynı zamanda bizim için önemli olan kişilerin çalıştığı işlerin sektörleri olsun. Bu durumda Sektor diye bir tablo yapıp CalistigiIs tablosuyla ilişkilendirmemiz gerekmektedir.
Sonuç olarak bir veritabanı tasarlanırken;
Veri tekrarı yapılmamalıdır.
Boş yer mümkün olduğunca az olmalıdır.
İlişkilerin anlamsal bütünlüğü olmalıdır.
İlişkilerde veri artıklığı (redundancy) önlenmelidir.
Ekleme, silme ve güncelleme problemleri ortadan kaldırılmalıdır.
İlişkilerde NULL değerlerden mümkün oldukça kaçınmalıdır
Sorgularda bilgi tutarsızlığına yol açan tasarımlardan kaçınmalıdır.
Örnek Veritabanı Çalışması
Problem: Bir okulda öğrencilere ait bilgiler, öğrencinin almış olduğu notlar, ders tanımları ve dersi veren öğretmene ait bilgilerin tutulmasını sağlayan bir veritabanı tasarlanmak isteniyor. Bir sonraki slaytta verilen bilgiler doğrultusunda;
Varlık – İlişki diyagramını çiziniz?
Normalizasyon işlemini gerçekleştiriniz?
Aşağıdaki tabloda verilen nitelikleri ve bu niteliklerin açıklamalarını dikkatlice inceleyin.
İlişkisel Cebir
İlişkisel cebir, bir ilişkisel sorgulama dilidir. Bu ifadeler yardımı ile birçok sorgulama işlemi kodlama aşamasına geçmeden önce tanımlanabilmektedir.
Örneğin, belirli kayıtların seçilmesi, belirli sütunların sorgulama sonucunda elde edilmesi gibi daha birçok işlem ilişkisel cebir ifadeleri kullanılarak kolayca ortaya konabilmektedir.
İlişkisel cebir, bir veya iki ilişkiyi girdi olarak alıp, sonuçta yeni bir ilişki üreten bir dizi işlemden oluşmaktadır. Ayrıca ilişkisel cebir bir veritabanı sorgulama dilidir.
İlişkisel cebir bir sorgulama dilidir fakat bu sorgulamalar sadece biçimsel olarak yapılmaktadır.
Yani sorgulama işleminin yapılması için bir yorumlayıcı yada derleyiciye ihtiyaç yoktur. Bu bakımdan ele alındığında SQL’ den farklıdır.
Burada yazılan cebir ifadeleri daha sonraki aşamada bir sorgu dili ile (örneğin SQL) komutlara dönüştürülmektedir.
Bir ilişkisel veritabanında kullanılan temel ilişkisel cebir ifadeleri şunlardır.
Seçme (select) işlemi
Projeksiyon / Atma (project) işlemi
Kartezyen çarpım (cartesian product) işlemi
Birleştirme (join) işlemi
Kesiştirme (intersect) işlemi
Fark (difference) işlemi
Seçme İşlemi
Belirli bir ilişkiden bazı kayıtların seçilerek ortaya konulması işlemidir. işareti ile gösterilmektedir. Seçme işlemi şu şeklide tanımlanmaktadır.
Seçim işleminde karşılaştırma işleçleri olan =, >, <, ?, ?, ? ifadeleri de kullanılmaktadır. Ayrıca mantıksal operatörler olan “ve” için ^, “veya” için v işaretleri de kullanılmaktadır.
Örnek: Müşteri tablosu aşağıda verilmiştir. Bu tabloyu kullanarak ilçesi “Maltepe” olan müşterileri listeleyiniz.
Belirli bir ilişkiden sadece bazı sütunları atmak için yapılan bir işlemdir. Bu işlem sembolü ile gösterilmektedir. Atma işlemi aşağıdaki şekilde tanımlanmaktadır.
Yine burada da mantıksal operatörler ve karşılaştırma işlemleri kullanılabilmektedir.
Pi sembolü, projeksiyon/atma işlemini ifade eder.
Karşılaştırma işleçleri olan =, >, <, ?, ?, ? ifadeleri de kullanılmaktadır. Ayrıca mantıksal operatörler olan “ve” için ^, “veya” için v işaretleri de kullanılmaktadır.
Kartezyen Çarpım İşlemi
Belirli bir ilişkiden mümkün olabilecek tüm ilişki çiftlerinin elde edilmesi ve tek bir ilişki biçiminde gösterilmesi için kartezyen çarpım kullanılmaktadır. Kartezyen çarpım X sembolü ile gösterilmektedir. Kartezyen çarpımın genel kullanım biçimi şöyledir.
Kartezyen Çarpım İşlemi
Belirli bir ilişkiden mümkün olabilecek tüm ilişki çiftlerinin elde edilmesi ve tek bir ilişki biçiminde gösterilmesi için kartezyen çarpım kullanılmaktadır. Kartezyen çarpım X sembolü ile gösterilmektedir. Kartezyen çarpımın genel kullanım biçimi şöyledir.
Sonuç olarak elde edilecek olan kartezyen çarpım tablosu aşağıdaki gibi olacaktır.
Birleştirme İşlemi
Kurulan iki ilişkiden birinde veya her ikisinde birden bulunan kayıtların seçilmesi için yapılan bir işlem türüdür. Bu işlem U simgesi ile gösterilmektedir.
Örnek: Aşağıda verilen Kredi ve Mevduat tablolarını göz önüne alarak, bankanın Maltepe şubesinde mevduat ve/veya kredi hesabı bulunan müşterilerin isimlerini listeleyiniz?
Bu sorgu neticesinde elde edilen sonuç aşağıdaki gibi olacaktır.
Kesişme İşlemi
Belirlenen iki ilişkiden birinde bulanan kayıtların belirlenmesi için kullanılan bir işlemdir. Bu işlem ? simgesi ile gösterilmektedir. Genel gösterimi aşağıdaki gibidir.
Örnek: Aşağıda verilen Kredi ve Mevduat tablolarını göz önüne alarak, bankanın Maltepe şubesinde hem mevduat hem de kredi hesabı bulunan müşterilerin isimlerini listeleyiniz?
Bu sorgu neticesinde elde edilen sonuç aşağıdaki gibi olacaktır.
Fark İşlemi
Verilen iki ilişkide birinde bulunup diğerinde bulunmayan kayıtların gösterilmesi için kullanılan bir işlemdir. ( - ) işareti ile gösterilmektedir.
Örnek: Aşağıda verilen Kredi ve Mevduat tablolarını göz önüne alarak, bankanın Konak şubesinde mevduat hesabı olup kredi hesabı olmayan müşterilerin isimlerini listeleyiniz?
Bu sorgu neticesinde elde edilen sonuç aşağıdaki gibi olacaktır.
İlişkisel Model Örneği
Örnek olarak basit bir market veritabanı tasarlayalım. Bir markette olabilecek tablolar aşağıda gösterilmiştir.
Bu veritabanı örneği basit düzeyde bir örnektir.
Tablolar arasında çeşitli ilişkiler bulunmaktadır.
Örneğin, Personel tablosunda yer alan Reyon No, Reyonlar tablosundaki Reyon No ile ilişkilidir. Burada Reyon No = 23 olan personel “Fatih Yücalar” ın Manav reyonunda çalıştığı bu ilişkiye bakılarak söylenebilmektedir.
Reyonlar tablosunda yer alan her ürün grubuna bir numara verilerek birbirlerine karışmaları engellenmiştir. Ayrıca Ürünler tablosundaki Reyon No alanı Reyonlar tablosundaki Reyon No ile ilişkilidir.
Burada her ürün grubuna bir numara verilerek sistematik bir şekilde düzenlenmesi sağlanmıştır.
Daha sonra Reyonlar ve Ürünler arasındaki ilişki kullanılarak ürün bilgilerine erişim sağlanmıştır.
Burada ayrıca ürün adına bakılarak, ürünün hangi reyonda yer aldığı hemen tespit edilmektedir.
Örneğin; “Elma” ürünü “23” numaralı reyonda yer almaktadır.
23 numaralı reyonda çalışan personelin ise “Murat Demir” olduğu aradaki ilişkilere bakılarak tespit edilebilmektedir.
SQL Server’ da bu tablolar arasındaki ilişki aşağıdaki gibi olacaktır.
Kaydol:
Yorumlar (Atom)