25 Şubat 2018 Pazar

NORMALİZASYON


      Normalizasyon; veri tabanı tasarım aşamasında veri tekrarını, veri kaybını veya veri yetersizliğini önlemek için gerçekleştirilen işlemlerdir.
      Normalizasyon tanım olarak ise; (Ayrıştırma),  veri tabanlarında çok fazla sütun ve satırdan oluşan bir tabloyu tekrarlardan arındırmak için daha az satır ve sütun içeren alt kümelerine ayrıştırma işlemidir.
       İlişkisel veri tabanı tasarlanması aşamasında verinin tekrarlanmasını, kaybını veya yetersizliğini önlemek için normalleştirme (normalization) işlemi uygulanır.
      Normalleştirme, aynı zamanda “ilk taslak” veri tabanı tasarımının üzerinde revizyonlar yapmanın yolu, taslağı son haline yaklaştırmanın yöntemlerden birisidir.
      Normalleştirmenin altyapısı da, ilişkisel modelin altyapısı gibi matematikseldir. Temel alınan kavram, işlevsel bağımlılık (functional dependency)  denilen bir kavramdır.

Normalizasyonun Amacı
Veri Bütünlüğünün Sağlanması
–Gereksiz veri tekrarını önleyerek verilerdeki bozulmaları önlemek
Uygulamadan Bağımsızlık
–Uygulama değişse bile veri tabanı tutarlı olarak çalışmalı
Performansı Arttırmak
–Veri tekrarı en aza iner ve arama hızlı olur.

Normalleştirme Aşamaları
   Birinci Normal Form
   İkinci Normal Form
   Üçüncü Normal Form
   Boyce-Codd Normal Formu
   Dördüncü Normal Form
    …
Konuyu detaylandırabilmek için bir veri tabanı oluşturalım ve normalizasyonunu yapalım. Tabloda bir teknik destek firmasının çalışanları, servis araçları, servis şoförleri ve servis verilen semtler bulunsun. Her bir şoför tek araç ile semt bazında servis yapmaktadır.
Normal Olmayan Form:

Birinci Normal Form
Bir veri tabanının 1NF olabilmesi için aşağıdaki özellikleri karşılayabilmesi gerekir:
 >Aynı tablo içinde tekrarlayan kolonlar bulunamaz,
 >Her kolonda yalnızca bir değer bulunabilir
 >Her satır bir eşsiz anahtarla tanımlanmalıdır (Unique Key - Primary Key)
Yukarıdaki tabloyu 1NF yapacak olursak:
İşte şimdi oldu. "Id" sütununu eşsiz anahtar olarak atadık. 1NF kurallarına harfiyen uyduk. 

 İkinci Normal Form
Bir veri tabanının 2NF olabilmesi için aşağıdaki özellikleri karşılayabilmesi gerekir:
>Tablo 1NF olmalıdır,
>Anahtar olmayan değerler ile kompozit (bileşik) anahtarlar arasında kısmi (partial) bağımlılık durumu oluşmamalıdır. Kısmi bağımlılık durumu, anahtar olmayan herhangi bir değer kompozit bir anahtarın yalnızca bir kısmına bağıl ise oluşur.
>Herhangi bir veri alt kümesi birden çok satırda tekrarlanmamalıdır. Bu tür veri alt kümeleri için yeni tablolar oluşturulmalıdır.
>Ana tablo ile yeni tablolar arasında, dış anahtarlar (foreign key) kullanılarak ilişkiler tanımlanmalıdır.
      Aslında üç ve dördüncü maddeler ikinci maddenin sonuçlarıdır. Eğer anahtar olmayan bir kolonla herhangi bir komposit anahtar arasında kısmi bağımlılık varsa her zaman tekrarlayan veri alt kümeleri oluşur. Bu durumu düzeltmek için bahis konusu alt kümeleri farklı bir tablo haline getirmeli ve elde ettiğimiz tablolar ile ana tablomuz arasındaki ilişkiyi tanımlamalıyız.

En son oluşturduğumuz tablomuzu bir gözden geçirelim: "Çalışan - Soyad" kombinasyonuna bakın. Çok tekrarlanıyor çünkü eşsiz anahtara verimli bir şekilde bağlayamamışız. Bunu düzeltmek için tablomuzu aşağıdaki gibi ikiye bölelim ve aralarında bir ilişki oluşturalım:
    Yeni tablomuz ile ana tablomuzu ilişkilendirmek için "Cid" (Çalışan ID) isimli bir kolon yarattık. Dikkat ederseniz bu kolonun aldığı değer ana tablomuzdaki eşsiz anahtarı işaret ediyor. Bu ilişkilendirmeye Foreign Key diyoruz.

Üçüncü Normal Form
Bir veri tabanının 3NF olabilmesi için aşağıdaki özellikleri karşılayabilmesi gerekir:
>Veri tabanı 2NF olmalıdır,
>Anahtar olmayan hiç bir kolon bir diğerine (anahtar olmayan başka bir kolona) bağıl olmamalı ya da geçişken fonksiyonel bir bağımlılığı (transitional functional dependency) olmamalıdır. Başka bir deyişle her kolon eşsiz anahtara tam bağımlı olmak zorundadır.
         Veri tabanımızı 3NF şartlarına uydurabilmek için anahtar olmayan ve eşsiz anahtara tam bağımlı olmayan tüm kolonları kaldırmalıyız. Dikkat ederseniz bizim tablomuzda "Araç" kolonu eşsiz anahtarımıza değil "Şoför" kolonuna bağımlı. Birbirine bağlı olan bu iki kolonu (Şoför - Araç) ayrı bir tabloya ayırmamız ve tablomuzla aralarında bir ilişki yaratmamız gerekiyor.

Öncelikle şoför tablosu adında yeni bir tablo oluşturduk. Bu tabloda Sid (Şoför ID) adıyla bir eşsiz anahtar yarattık ve Servis tablomuzdaki Sid kolonundan bu eşsiz anahtara referans vererek foreign key oluşturduk.

BCNF / 3.5NF (Boyce-Codd Normal Form)
Bir veri tabanının 3.5NF olabilmesi için aşağıdaki özellikleri karşılayabilmesi gerekir:
>Veri Tabanı 3NF olmalıdır,
>Her determinant (belirleyici kolon) aynı zamanda bir aday anahtar olmalıdır.
>Determinant: Aynı satırdaki diğer kolon değerlerini belirlemek için kullanılan kolon kümesi determinant olarak adlandırılır.

        Servis tablomuza dikkatle baktığımızda iki tane determinant olduğunu görebiliriz. Semt kolonu, Cid - Sid kombinasyonunun; Sid ise Cid kolonunun determinantıdır.
        Bu noktada Semt kolonunun hali hazırda bir aday anahtar olduğunu görebiliyoruz çünkü her bir değer tekrar oluşturmaksızın tüm kayıt satırını tanımlayabilmekte. Öte yandan Sid için aynı şeyi söylemek mümkün değil çünkü tekrarlanıyor.
        Elbette bu durumu düzeltmek için tabloyu ikiye ayıracak semt tablosunun değerini tabloları ilişkilendirmek için foreign key olarak kullanacağız.




        Görülebileceği gibi artık tablolarımızın hiçbirinde aday anahtar olmayan determinant yok. Bu nedenle veri tabanımız BCNF'tir diyebiliriz.

Dördüncü Normal Form
Bir veri tabanının 4NF olabilmesi için aşağıdaki özellikleri karşılayabilmesi gerekir:
>Veri Tabanı 3NF olmalıdır,
>Çok-değerli bağımlılıkları (Multli-Valued dependency) olmamalıdır.
       Multi-Valued Dependency: Bu durum bir ya da daha çok veri satırının var olması, aynı tabloda başka bir (ya da daha çok) veri satırının bulunmasını gerektirdiğinde ortaya çıkar. 
Örneğin, bir yazılım firması düşünelim. Geliştirdikleri yazılımların masaüstü bilgisayarlar için olanlarını tek-kullanıcılı ve çok-kullanıcılı olarak iki versiyonla piyasaya sunuyor olsunlar. Diyelim ki bu firmanın geliştirdiği tüm yazılımları barındıran bir veri tabanı oluşturuyoruz. Bu veri tabanında bir masaüstü yazılımın tek-kullanıcılı versiyonunu eklediysek mutlaka bir başka satırda aynı yazılımın çok-kullanıcılı versiyonu için de bir kayıt açılmış olmak durumundadır...

Anahtar (Key)
Anahtar bir veya birden fazla alanın bir satır için niteleyici olarak girilmesi için zorlanan bir çeşit zorlayıcıdır.
2 çeşit anahtar vardır:
              Birincil Anahtar (Primary Key)
              Yabancı Anahtar (Foreign Key)
Birincil anahtar
Bir kayıta ulaşmayı sağlayacak anahtar veridir.
Örneği öğrenciler arasında iki Ahmet var. Arama yaparken istediğimiz Ahmet’i bulmak için her bir öğrenciye özel bir numara olmalıdır.
Örneğin öğrenci numarası
Birden fazla alanda birlikte birincil anahtar olabilir
Yabancı anahtar
Bir tabloya girilebilecek kayıtları başka bir tablonun belli alanındaki verilerle sınırlandırmaya ve
 ilişkilendirmeye yarar.
Örneğin öğrencilerin not verilerinin girildikleri tablodaki her satıra öğrenci bilgileri tablosundaki öğrenci no ile eşleşen bir değer girilmesi gibi.

bir sonraki dersimizde görüşmek üzere esen kalın... ebi

yararlanılan kaynaklar:
Hakan ÖZAKAR [web adresi]
Öğr. Gör. M. Mutlu YAPICI[WEB Adresi]

Veri Tabanı Yönetim Sistemi (VTYS)-2



Veri Tanımlama Dili (VTD)
Veri tabanı tanımlarını VTYS'ye iletmek için kullanılan biçimsel dile Veri Tanımlama Dili (DDL: Data Definition Language) adı verilir.
Veri Tanımlama Dili kullanılarak oluşturulan veri tabanı tanımları, VTYS'nin Veri Tanımlama Dili Derleyicisi olarak adlandırılabilecek bir bileşeni tarafından çözümlenir, varsa eksik ve yanlışları bulunarak kullanıcıya iletilir.
Yanlışlardan arınmış veri tabanı tanımları VTYS tarafından uygun yapılara dönüştürülerek saklanır.
Veri tabanı tanımlarının VTYS tarafından derlenerek saklanması veri tabanı yaklaşımının temel özelliklerinden biridir.
Bu süreç sayesinde, veri tabanı tanımlarının yetkili kişiler tarafından bir kez yapılması, tanımların kalıcılığının sağlanması ve kullanıcıların bu tanımları kullanmaları ve bu tanımlara uygun işlem yapmaları sağlanmış olur.
Programlama dili kullanılarak gerçekleştirilen dosya tabanlı uygulamalarda, bilgisayar belleklerinde yalnız veri saklanır. Uygulama programlarında, veri üzerinde yapılacak işlemler yanında verinin tanımı da yer alır.
Veri tabanı yaklaşımında ise veri tanımlama ile veriler üzerindeki uygulama işlemleri birbirinden tamamen ayrılmıştır.
Veri tanımlama ve daha önce yapılmış tanımları değiştirme yetkisi yalnız Veri Tabanı Sorumlusu (Database Administrator) olarak adlandırılan ve veri tabanının tümünden sorumlu olan kişi ya da kişilere aittir.
Veri tabanı üzerinde işlem yapan, uygulamaları gerçekleştiren kullanıcıların ise veri tanımlama ya da mevcut tanımları değiştirme yetkisi yoktur.
VTD ile yapılan tanımlarda veri tabanı tanımları içinde yer alan en önemli tanımlar şunlardır:
Mantıksal düzeyde yapılan düzenlemeler oluşturulan yapılar ve her yapıda hangi verilerin yer aldığı.
Her verinin türü, uzunluğu, varsa varsayılan değeri ve diğer özellikleri.
Veriler arası ilişkiler ve her türlü kısıtlamalar.
Fiziksel veri yapıları ile ilgili tercihler ve parametreler.
Kullanıcı tanımları ve kullanıcıların hangi veriler üzerinde hangi işlemleri yapmaya yetkili olduklarına ilişkin tanımlar.
Veri tabanı tanımları veri sözlüğü (data dictionary) olarak da adlandırılır.
VTYS’nin fiziksel ortamında aşağıda belirtilen çeşitli veriler saklanır:
veri dosyaları
veri tabanı tanımlarının yer aldığı veri sözlüğü
veri dosyalarına ya da veri sözlüğüne erişim için kullanılan dizinler (indeksler)
veri değerlerine ve uygulamalara ilişkin istatistiksel veriler ve günlük dosyaları (logfiles)
  
Sorgu Dili ve Sorgu İşleyicisi
Veri tabanı uygulamaları için kullanılan en yaygın araç sorgu dilidir.
Kullanıcı, sorgu dili ile, gerçekleştirmek istediği işlemi yalın bir biçimde ifade eder.
Kullanıcının oluşturduğu sorguda, neyin yapılmasının istendiği yer alır; bunun nasıl yapılacağı ise yer almaz.
Yapısal Sorgu Dili (SQL)
IBM, deneysel bir ilişkisel veritabanı yönetim sistemi geliştirmek amacıyla System/R adlı bir proje başlatır.
Bu sistem için SEQUEL (Structured English Query Language) adında bir sorgu dili geliştirilmeye başlanmıştır.
1979’ da tamamlanan bu proje sırasında geliştirilen dilin adı SQL (Structured Query Language) olarak değiştirilmiştir.
ORACLE
System/R projesini izleyen bir grup mühendis, ilişkisel veritabanındaki potansiyeli görmüş ve Relational Software, Inc. adında bir şirket kurmuşlardır (1979)
Oracle adını verdikleri ilk ticari ilişkisel veri tabanı yönetim sistemini geliştirmişler ve SQL’i bu sistemde sorgu dili olarak kullanmışlardır.
Sorgu İşleyicisi
VTYS'nin, sorguların işlenmesi ile ilgili görevleri gerçekleştiren bileşenine Sorgu İşleyici (Query Processor) adı verilir.
Sorgu işleyicinin görevleri:
-Sorgunun sözdizimsel ve anlamsal özümlemesini yapmak.
-Kullanıcının verilen işlemi yapmaya yetkili olup olmadığını denetlemek.
-Sorguyu işletmek için kullanılabilecek algoritmaları (işletim senaryolarını) belirlemek ve “Query
-Optimizer” alt bileşeni yardımıyla en iyisini seçmek.
-Sorgunun işletimini gerçekleştirdikten sonra yanıtını oluşturup kullanıcıya iletmek.
  
Veri İşleme Dili (DML)
Veri tabanı üzerinde, veriyi değiştirme, silme ve güncelleme gibi sorgularla ifade edilemeyecek ya da sorgularla ifade edilmesi uygun olmayan işlemler de gerçekleştirilir.
Bu işlemler için Veri İşleme Dili (DML: Data Manipulation Language) olarak adlandırılan bir dil kullanılır.
Genişletilmiş Programlama Dili
Veri tabanı üzerindeki uygulamaları gerçekleştirmek için genişletilmiş bir dil oluşturulur.
Bu dilde hem veri tabanı işlemlerini gerçekleştiren DML komutları, hem de diğer işlemleri gerçekleştiren C# ve Visual Basic gibi genel amaçlı programlama dillerinden bir ya da birkaçı ile yazılmış taşıyıcı dil komutları yer alır.
Oluşturulan genişletilmiş dil (DML + taşıyıcı dil) ile hazırlanan uygulama programları, VTYS'nin bileşeni olan genişletilmiş derleyicilerle derlenerek saklanır ve gerektiğinde çalıştırılarak kullanılır.

Veri Tabanı Yöneticisi
Veri Tabanı Yöneticisi (Database Manager), kullanıcı isteklerini veri tabanı üzerinde gerçekleştiren ve çok kullanıcılı ortamdaki işletimsel sorunları çözümleyen yazılımlar bütünüdür.
VTYS’nin gerçekleştirdiği işlemlerin önemli bir bölümü bu katman tarafından gerçekleştirilmektedir.
Veri Tabanı Yöneticisinin birçok bileşeni vardır. Bunlardan en önemli iki tanesi şunlardır:
  Bellek Yöneticisi (Storage Manager)
       -Dosya Yöneticisi (File Manager)
       -Tampon Yöneticisi (Buffer Manager)
  Hareket Yöneticisi (Transaction Manager)
Bellek Yöneticisi
Veri Tabanı Yöneticisinin, verilerin ikincil
belleklerde saklanması ile ilgili işlevlerini yöneten kesimdir.
Bir VTYS'nin Bellek Yöneticisi olarak, VTYS'nin altında çalıştığı işletim sisteminin dosya sistemini kullanılabilir.
Ancak büyük boyutlu veri tabanlarını kurmak
ve işletmek için kullanılan VTYS'ler için verimlilik çok önemlidir ve gerek ana bellek, gerekse ikincil bellek yönetiminin VTYS tarafından gerçekleştirilmesinde yarar vardır.
Bellek Yöneticisi aşağıdaki iki bileşenden oluşur:
Dosya Yöneticisi (File Manager)
Verinin ikincil bellek dosyalarında saklanmasını sağlayan ve ana bellek ile ikincil bellek arasında verinin bloklar halinde aktarılmasını sağlayan yazılımlardır.
Tampon Yöneticisi (Buffer Manager)
Dosya yöneticisi aracığıyla ikincil bellekten getirilen veri bloklarını ana bellek sayfalarında saklayan, ana bellek sayfalarını yöneten ve gerektiğinde ana bellek sayfalarındaki veri bloklarının, dosya yöneticisi aracılığıyla ikincil belleklere yazılmasını sağlayan yazılımdır.
Hareket Yöneticisi
Veri Tabanı Yöneticisinin, veri tabanı yaklaşımının üstünlüklerinden faydalanmasını sağlayan kesimidir.
Veri tabanı yaklaşımının üstünlükleri arasında:
       Çok kullanıcılı ortamda çok çeşitli kullanıcı isteklerinin eşzamanlı gerçekleştirilmesi ve bu arada veri tabanı ve uygulama tutarlılıklarının korunması,
       Veri tabanı üzerinde yapılan işlemlerin yazılım, donanım ya da güç kaynağı ile ilgili bozukluklar nedeniyle yitirilmemesi         gibi avantajlar bulunmaktadır.
Bu avantajları gerçekleştirmek için 4 temel özellik sağlanmalıdır (ACID).
ACID (Atomicity, Consistency, Isolation, Durability)
Hareket Yöneticisinde belirtilen hareket (transaction), bir bütün oluşturan ve tutarlılık açısından veri tabanı üzerinde birlikte gerçekleştirilmesi gereken işlemler bütünüdür.
Tutarlılık açısından, bir hareketi oluşturan işlemlerin ya tümünün gerçekleştirilmesi, ya da hiçbirinin gerçekleştirilmemesi (o ana kadar yapılan tüm değişiklikler geri alınarak hareketin başlangıç zamanındaki duruma dönülmesi) gerekir. Buna hareketin Bölünemezlik (Atomicity) özelliği adı verilir.

Veri tabanında saklanan ilişkili verilerin belirli kurallar ve kısıtlamalar dahilinde tutarlılığının (Consistency) sağlanması gerekir.
Örneğin öğrencinin kişisel bilgilerinin yer aldığı bir tabloda bir öğrencinin numarası değiştiğinde, aynı öğrencinin not bilgilerinin saklandığı diğer tabloda eski bilgi yenisi ile güncellenmez ise veri tutarsızlığı oluşur.
Bütünlük Kısıtlamaları (Integrity Constraints) kullanılırsa, bu tip güncellemelerin uygulama programı üzerinden yapılmasına gerek olmadan, VTYS tarafından bu işlemler otomatik olarak yapabilir.
Veriler üzerinde değişikliğe neden olan (veri ekleyen, silen ya da verileri güncelleyen) hareketler birlikte işletildiğinde, henüz tamamlanmamış (ve belki de tamamlanmayarak geriye alınacak) bir hareket tarafından gerçekleştirilen değişiklik işlemleriyle oluşturulan veri değerlerinin diğer hareketler tarafından görülmemesi gerekir. Bu da hareketin İzolasyon (Isolation) özelliğidir.
Hareket tamamlandığında (commit) bu değişiklikler diğer hareketler tarafından görülebilir. 

Hareketler veri üzerinde karmaşık işlemler gerçekleştirebilir. Bu işlemlerin bütününü güvence altına almak için VTYS hatalara karşı dayanıklı olmalıdır.
Sunucuda meydana gelebilecek sistem sorunu, elektrik kesilmesi, işletim sisteminden ya da farklı yazılımlardan kaynaklanabilecek hata durumlarında VTYS'nin herhangi bir veri kaybı yaşanmamasını sağlaması da Dayanıklılık (Durability) özelliğidir.

bir sonraki dersimizde görüşmek üzere esen kalın... ebi

yararlanılan kaynaklar:
Yrd. Doç. D. Altan MESUT [web adresi]
Öğr. Gör. Dr. Sibel SOMYÜREK [web adresi]
Öğr. Gör. M. Mutlu YAPICI[WEB Adresi]


Veri Tabanı Yönetim Sistemi (VTYS)


    Veri tabanı; belirli bir veri modeli ile saklanan, sistematik erişim imkânı olan, yönetilebilir, güncellenebilir, taşınabilir, birbirleri arasında tanımlı ilişkiler bulunabilen bilgiler kümesidir.
     VTYS; bir veri tabanını yaratmak, üzerinde istenilen bilgiyi aramak, gerektiğinde bilgi eklemek-silmek-değiştirmek ve veri tabanı ile ilgili her türlü işletimsel gereksinimleri karşılamak için kullanılan geniş kapsamlı yazılım sistemidir.
     VTYS, birbirleri ile ilişkili veri ve programlar topluluğundan oluşmaktadır. Veri tabanları; büyük miktardaki bilgileri depolamada geleneksel yöntem olan ‘‘dosya-işlem sistemine’’ alternatif olarak geliştirilmiştir.


Veri Tabanı Örnekleri ;
Üniversite- Öğrenci İşleri Bilgi Sistemi
Hastane-Hasta, doktor, tedavi, araç-gereç, mali bilgiler
Ticari bir şirket- Müsteri, Ürün, Satış, Ödeme, Teslimat bilgileri
Banka-Müşteri, mevduat, kredi kartı, kredi bilgileri

Veri Tabanı Yönetim Sistemlerinin Sınıflandırılması
Veri Modeline Göre
    Hiyerarşik
    Ağ
    İlişkisel
    Nesneye Yönelik
Kullanıcı Sayısına Göre
   Tek kullanıcılı
   Çok kullanıcılı

Hiyerarşik veritabanları
Veri tabanları için kullanılan ilk modeldir. Hiyerarşik veritabanları bilgileri bir ağaç yağısında saklarlar.


Ağ veritabanları
Hiyerarşik veritabanları yetersiz kalınca 1960’ların sonunda verilerin ağaçların daha gelişmiş hali olan graflar şeklinde saklandığı yapı ortaya çıkmıştır.
İlişkisel veritabanları
1970’lerin başında geliştirilmiştir. Bu sistemde veriler tablo şeklinde saklanır. Tablolar arasındaki bağlantılar matematiksel ilişkilerle gösterilir. Günümüzdeki hemen hemen tüm veri tabanı programları bu yapıdadır.
Nesneye Yönelik veritabanları
Günümüzdeki pek çok kelime işlemci ve hesap tablosu programında kullanılan nesneler artık veritabanlarında da kullanılmaktadır.
Nesneye yönelik veritabanı C++ gibi nesneye yönelik bir dille oluşturulan ve yine bu tarz bir dille kulanılan veri tabanı anlamına gelir.

Veri tabanı mimarisi üç seviyeden oluşur:
İç (Fiziksel) Seviye:
Verilerin nasıl saklanacağı ve bilgisayar tarafından nasıl işleneceği ile ilgilenen seviyedir. Veri tabanının performansı bu seviyenin iyi planlanmış olmasına bağlıdır. 
Kavramsal Seviye:
İç seviye ile dış seviye arasında iletişimi sağlayan seviyedir.
Dış (Alt) Seviye:
Kullanıcıların verileri gördüğü yada veri eklemek-silmek-değiştirmek için kullandığı ekranlar dış seviyede yer alır.

Neden VTYS?
VTYS yaklaşımında veri girişi ve depolanması veriye erişen uygulama programlarından bağımsızdır.
Klasik dosya kullanımında ise, kayıt desenleri ve dosya yapılarında ortaya çıkabilecek en ufak bir değişiklik bile uygulama programlarının değiştirilmesine neden olmaktadır.

VTYS Kullanmanın Avantajları
Ortak verilerin tekrarını önIenmesi 
Verilerin merkezi denetiminin ve tutarlılığının sağlanması
Veri payIaşımının sağlanması
Fiziksel yapı ve erişim yöntemi karmaşıklıklarının, çok katmanlı mimarilerle kullanıcıdan
gizlenmesi,
Her kullanıcıya yalnız ilgilendiği verilerin, alışık olduğu kolay, anlaşılır yapılarda sunulması
Sunulan çözümleme, tasarım ve geliştirme araçları ile uygulama yazılımı geliştirmenin kolaylaşması.
Veri bütünlüğünün gerekli olanakların sağlanması,
Güvenlik ve gizliliğin istenilen düzeyde sağlanması
Yedekleme, yeniden başlatma, onarma gibi işletim sorunlarına çözüm getirilmesi 



Hangi VTYS?
Oracle database
IBM DB/2
Adaptive Server Enterprise
Informix
Microsoft Access
Microsoft SQL Server
Microsoft Visual FoxPro
MySQL
PostgreSQL
Progress
SQLite
Teradata
CSQL
OpenLink Virtuoso

Oracle, MS SQL Server, IBM DB2 ... 
Büyük miktarda verinin güçlü bir sunucu üzerinde saklanması ve aynı anda çok sayıda kullanıcının bu veriler üzerinde işlem yapmasına izin veren güçlü VTYS'lerdir
Veriye erişim ve güvenlik ile ilgili kullanıcı yönetimi (user management) yapısı içerirler

MySQL
Web tabanlı uygulamaların en çok kullandığı VTYS'lerden biridir.
Mobil cihazlarda kullanılan iOS ve Android işletim sistemleri üzerinde çalışabilir ve kullanıcı yönetimi yapısını içerir
Access
Aynı anda çok sayıda kullanıcının aynı veriler üzerinde işlem yapması gerekmeyen durumlarda kullanılan, sisteme fazla yük getirmeyen VTYS'dir.
Kullanıcı yönetimi içermediği için veriye erişim ve güvenlik uygulama programı tarafından idare edilmelidir.

Ne zaman VTYS kullanmamalıyız?
VTYS kullanmak bilgisayara ek yük getirdiği için aşağıdaki gibi bazı durumlarda dosya kullanmak daha avantajlı olacaktır:
Saklayacağımız veri miktarı çok az ise
Sınırlı saklama kapasitesine sahip gömülü sistemlerde
Genellikle verinin tamamını sıralı olarak okuyup, yine tamamını sıralı olarak yazmamız gereken uygulamalarda (Büyük miktardaki verinin içinden restgele erişim ile küçük bir veri elde etmeye ihtiyacınız yoksa)

Veri tabanı Tasarlama
1. Nesneler tanımlanır
Kütüphane sistemi: kitap, üyeler, türler, ödünç hareketleri
2. Her nesne için bir tablo oluşturulur.
kitap,
uyeler,
turler,
odunc_hareketleri
3. Her tablo için bir anahtar alan seçilir
Kitap tablosu: kitapno
Üyeler tablosu: uyeno
4. Nesnelerin her bir özelliği için tabloya sütun eklenir
Kitap tablosu: kitapno, yılı, yazarı, adı, ilgili olduğu alan
5. Tekrarlayan nesne özellikleri için ek tablolar oluşturulur

6. Tablo ile doğrudan ilişkili olmayan alanlar belirlenir.
Ödünç hareketleri tablosunda  kitabı ödünç alan üyenin adresi doğrudan bu tablo ile ilişkili değildir.
Bu veri üye bilgilerinin tutulduğu üyeler tablosunda yer almalıdır.
7. Tablolar arasındaki ilişkiler tanımlanmalıdır.
Tanımlanan tablodaki alanların birbiri ile ilişkisi tanımlanır.
Örneğin üyeler tablosundaki uyeno ile odunç_tablosundaki uyeno alanı ilişkilendirilmelidir.



bir sonraki dersimizde görüşmek üzere esen kalın... ebi

yararlanılan kaynaklar:
Yrd. Doç. D. Altan MESUT [web adresi]
Öğr. Gör. Dr. Sibel SOMYÜREK [web adresi]
Öğr. Gör. M. Mutlu YAPICI[WEB Adresi]

OSI KATMANLARI



OSI (Open Systems Interconnection) modelini ISO (International Organization for Standardization) geliştirmiştir. Amaç iki bilgisayar arasındaki iletişimin nasıl olacağını tanımlamaktır. 1978 yılında ilk defa ortaya çıkarılan bu standart 1984 yılında yeni bir düzenleme yardımıyla OSI (Open System Interconnect) referans modeli olarak yayınlanmıştır. OSI öncesindeki dönemde, yalnızca bilgisayar donanımı üreten kuruluşlara özgü ağlar vardı. Bu ağların özellikleri, çoğunlukla yalnızca o üreticinin donanımının bağlanmasına izin verecek biçimde tanımlanmıştı. Onlardan ayrı olarak OSI, çeşitli üreticilerin ürünlerinin bağlanabileceği bir ağ için, bir sektör etkinliği olarak ortaya çıkmıştır. OSI Modeli herhangi bir donanım ya da bilgisayar ağı tipine göre değişiklik göstermemektedir. OSI' nin amacı ağ mimarilerinin ve protokollerinin bir ağ ürünü bileşeni gibi kullanılmasını sağlamaktır. OSI modeli 7 katmana ayrılmıştır.

Katmanlar Arasındaki İlişki
Her bir katmanın görevi bir üst katmana servis sağlamaktır. İki bilgisayar arasındaki iletişimde katmanlar sırasıyla iletişim kurarlar; eş düzeydeki katmanlar aslında doğrudan iletişim kurmazlar ancak aralarında sanal bir iletişim oluşur.
İki Bilgisayar Arasındaki Katmanlar, Gerçek ve Sanal İletişim Arasındaki İlişki


 Veri alt katmanlara iletilirken iletim şekli şu şekilde olur: Veri (data) halinde alınan bilgi, taşıma katmanında kesim (segment) adı verilen birimlere ayrılır. Bu şekilde veri alıcı makinede tekrar biraraya getirilirken doğru sıralanması sağlanmış olur. Ağ katmanına segment şeklinde gelen verilere burada adres bilgileri eklenir; böylece kesimler paket haline dönüşür. Veri-bağlantı katmanında paketlere MAC adresleri eklenerek çerçeve (frame) adını verdiğimiz yapı oluşur. En son aşama olarak fiziksel katmana gelen çerçeveler burada bir bit dizisine dönüştürülerek iletime hazır hale getirilir. Verinin iletimi üst katmandan alt katmana doğru olur. Verinin kablo ile iletimi fiziksel katman tarafından gerçekleştirilir. Diğer bilgisayarda ise önce fiziksel katman ile karşılanan veri üst katmanlara doğru hareket eder.

1. Fiziksel Katman
Fiziksel katman verinin kablo üzerinde alacağı yapıyı tanımlar. Veriler bit olarak iletilir. Bu katman bir ve sıfırların nasıl elektrik, ışık veya radyo sinyallerine çevrileceğini ve aktarılacağını tanımlar. Gönderen tarafta fiziksel katman bir ve sıfırları elektrik sinyallerine çevirip kabloya yerleştirirken, alıcı tarafta fiziksel katman kablodan okuduğu bu sinyalleri tekrar bir ve sıfır haline getirir. Fiziksel katman veri bitlerinin karşı tarafa, kullanılan medya(kablo, fiber optik, radyo sinyalleri) üzerinden nasıl gönderileceğini tanımlar. Veri iletiminin mümkün olabilmesi için iki tarafın aynı kurallar üzerinde tanımlanmış olması gerekir. Hub (Göbek) 1.katmanda çalışan bir cihazdır. Bu cihazlar gelen veriyi bir takım elektrik sinyalleri olarak gören ve bu sinyalleri çoğaltıp, diğer portlarına gönderen bir cihazdır.

2. Veri Bağlantı Katmanı
Veri bağlantı katmanı fiziksel katmana erişmek ve kullanmak ile ilgili kuralları belirler. Bu katmanda Ethernet ya da Token Ring olarak bilinen erişim yöntemleri çalışır. Bu erişim yöntemleri verileri kendi protokollerine uygun olarak işleyerek iletirler. Veri bağlantı katmanında veriler ağ katmanından fiziksel katmana gönderilirler. Bu aşamada veriler belli parçalara bölünür. Bu parçalara paket ya da çerçeve (frame) denir. Çerçeveler verileri belli bir kontrol içinde göndermeyi sağlayan paketlerdir. Veri bağlantı katmanının büyük bir bölümü ağ kartı içinde gerçekleşir. Veri bağlantı katmanı ağ üzerindeki diğer bilgisayarları tanımlama, kablonun o anda kimin tarafından kullanıldığının tespiti ve fiziksel katmandan gelen verinin hatalara karşı kontrolü görevini yerine getirir. Veri bağlantısı katmanı iki alt bölüme ayrılır: 
Media Access Control (MAC) - Logical Link Control (LLC)


MAC alt katmanı veriyi hata kontrol kodu(CRC), alıcı ve gönderenin MAC adresleri ile beraber paketler ve fiziksel katmana aktarır. Alıcı tarafta da bu işlemleri tersine yapıp veriyi veri bağlantısı içindeki ikinci alt katman olan LLC'ye aktarmak görevi yine MAC alt katmanına aittir. LLC alt katmanı bir üst katman olan ağ katmanı için geçiş görevi görür. Protokole özel mantıksal portlar oluşturur(Service Access Points, SAPs). Böylece kaynak makinada ve hedef makinada aynı protokoller iletişime geçebilir (örneğin TCP/IP<-->TCP/IP). LLC ayrıca veri paketlerinden bozuk gidenlerin (veya karşı taraf için alınanların) tekrar gönderilmesinden sorumludur. Flow Control yani alıcının işleyebileceğinden fazla veri paketi gönderilerek boğulmasının engellenmesi de LLC'nin görevidir. Ağlarda bulunan çerçeve tipleri şöyledir:
802.2 Ethernet II
 802.3 Ethernet
802.4 Token Bus
 802.5 Token Ring
 Ayrıca switch (anahtar) 2.katmanda çalışan bir cihazdır. Çünkü 2. katmanda tanımlı MAC adreslerini algılayabilirler ve bir porttan gelen veri paketini (yine elektrik sinyalleri halinde) sadece gerekli olan porta (o porttaki makinanın MAC adresini bildiği için) yollayabilirler.

3. Ağ Katmanı
Ağ katmanı veri paketine farklı bir ağa gönderilmesi gerektiğinde yönlendiricilerin kullanacağı bilginin eklendiği katmandır. Bu katmanda veriler paket olarak taşınır. Ağ katmanında iki istasyon arasında en ekonomik yoldan verinin iletimi kontrol edilir. Bu katman sayesinde verinin yönlendiriciler (router) aracılığıyla yönlendirilmesi sağlanır. Ağ aşamasında mesajlar adreslenir ayrıca mantıksal adresler fiziksel adreslere çevrilir. Bu aşamada ağ trafiği, yönlendirme gibi işlemler de yapılır. IP protokolü bu katmanda çalışır.

4. Taşıma Katmanı 
Taşıma katmanı üst katmanlardan gelen veriyi ağ paketi boyutunda parçalara böler. TCP, UDP, SPX protokolleri bu katmanda çalışır. Bu protokoller hata kontrolü gibi görevleri de yerine getirir. Bu katmanda veriler kesim (segment) halinde taşınır. Taşıma katmanı üst katmanlara taşıma servisi sağlar ayrıca ağın servis kalitesini artırır (QoS – Quality of Service). Taşıma katmanı verinin uçtan uca iletimini sağlar. Verinin hata kontrolü ve zamanında ulaşıp ulaşmadığı kontrol edilir. Taşıma katmanı ayrıca veriyi üst katmanlara taşıma görevi yapar.

5. Oturum Katmanı
 Oturum katmanında iki bilgisayardaki uygulama arasındaki bağlantının yapılması, kullanılması ve bitilmesi işlemleri yapılır. Bir bilgisayar birden fazla bilgisayarlarla aynı anda iletişim içinde olduğunda, gerektiğinde doğru bilgisayarla konuşabilmesini sağlar. Bu, sunum katmanına yollanacak veriler farklı oturumlarla birbirinden ayrılarak yapılır. NetBIOS, RPC, Named Pipes ve Sockets gibi protokoller bu katmanda çalışır.
 6. Sunuş Katmanı
 Sunuş katmanının en önemli görevi yollanan verinin karşı bilgisayar tarafından anlaşılacak şekilde çevrilmesidir. Bu sayede farklı programların birbirlerinin verisini kullanabilmesi mümkün olur. Sunum katmanı uygulama katmanına verileri yollar daha sonra bu katmanda verinin yapısı, biçimi ile ilgili düzenlemeler yapılır, verinin formatı belirlenir. Ayrıca verinin şifrelenmesi, açılması, sıkıştırılması da bu katmanda yapılır. GIF, JPEG, TIFF, EBCDIC, ASCII vb. bu katmanda çalışır.
7. Uygulama Katmanı
 Uygulama katmanı bilgisayar uygulaması ile ağ arasında bir arabirim sağlar. OSI katmanları arasında sadece bu katman diğer katmanlara servis sağlamaz. Uygulamaların ağ üzerinde çalışması sağlanır. Uygulama katmanı ağ servisini kullanacak olan programdır. Bu katman kullanıcıların gereksinimini karşılar. SSH, telnet, FTP, TFTP, SMTP, SNMP, HTTP, DNS protokolleri ve tarayıcılar bu katmanda çalışır. E-posta ve veritabanı gibi uygulamalar bu katman aracılığıyla yapılır.







bir sonraki dersimizde görüşmek üzere esen kalın... ebi 

yararlanılan kaynaklar:
Öğr. Gör. Erhan POLAT [WEB adresi]


9 Şubat 2018 Cuma

PROGRAMLAMA-KODU GAME LAB


Merhaba arkadaşlar bugün sizlere çocuklarınızın çok seveceği ve eğlenirken öğreneceği programdan bahsedeceğim.

Kodu Game Lab, Microsoft tarafından geliştirilen ve çocuklar için oyunlar oluşturmayı sağlayan, görsel programlama diline sahip ücretsiz bir program. Kodu Game Lab ile programlama bilgisine sahip olmadan kendi karakterlerinizi, hikayenizi ve kurallarınızı oluşturabileceğiniz bir oyun yapma aracı. Aşağıda indirme linkleri paylaştım.
GEZGİNLER       kodu-game-lab-indir          
MICROSOFT      download-kodu-game-lab   






Arkadaşlar aşağıdaki eba linkinde kodu game lab'ın ders anlatım videosu vardır. Tıkladığınız zaman sizi derse yönledirecektir.


bir sonraki dersimizde görüşmek üzere esen kalın... ebi

yukarı git