NESNEYE DAYALI VERİTABANLARI Bir nesnenin tanımı Nesne
Transkript
NESNEYE DAYALI VERİTABANLARI Bir nesnenin tanımı Nesne
NESNEYE DAYALI VERİTABANLARI İÇERİK Nesne tanımları Nesne yapıları Nesneye dayalı kavramlar OODBS (Nesneye Dayalı Veritabanları) Bir örnek ile OQL (Nesne Sorgu Dili) Örneklerle SQL3 Bir nesnenin tanımı Nesneler – kullanıcı tarafından tanımlı karmaşık veri tipleridir. Bir nesnenin yapısı veya (behavior/operations) vardır. durumu (variables) ile ona ait yöntemleri Bir nesne dört karakteristiği ile açıklanır Identifier: Her bir nesne için sistem tarafından verilen ID Name: Veritabanında her bir nesneyi benzersiz olarak tanımlayacak bir isim Lifetime: Bir nesnenin kalıcı veya geçici bir nesne olup olmadığı Structure: Tip yapıcılar kullanılarak nesnelerin inşa edilmesi Nesne Yapısı Bir karmaşık nesne, bilinen diğer nesneler kullanılarak meydana getirilmiş olabilir. Bir nesne (i, c, v) şeklinde sunulur i, tekil id değeri c, bir tip yapıcısı v, nesnenin durumu Yapılar Basit tipler: atom, satır veya set Koleksiyon tipi: list veya array Nesneye Dayalı Kavramlar Abstract Data Types (soyut veri tipleri) Sınıf (class) tanımı, karmaşık nitelik tipleri tanımlamaya izin verir. Encapsulation (kapsülleme) Operasyonların gerçekleştirimini ve nesne yapısının gizliliğini sağlar Inheritance (kalıtım) Hiyerarşi kapsamı içinde verinin paylaşımını sağlar, kodun yeniden kullanımını destekler Polymorphism Operator overloading desteklenir (bir nesneye birden fazla görev yükleme gibi) (abs gibi bir fonksiyonun bütün veri tipleri için çalıştırılması) Nesneye Dayalı Veritabanı Nedir? Bütün önemli nesne tabanlı kavramları destekleyen veritabanı sistemidir Bazı ek özellikler Tekil nesne belirticileri Sürekli nesne idaresi Nesneye Dayalı VT Avantajları Tasarımcı nesnelerin yapısı ve onların davranışlarını belirleyebilir Java ve C++ gibi nesne tabanlı diller ile daha iyi etkileşim sağlanır Karmaşık ve kullanıcı tanımlı tipler tanımlanabilir İşlemlerin paketlenmesi ve kullanıcı tanımlı işlemlerin yapılması mümkün hale gelir. Nesne Sorgu Dili (OQL) Bildirimsel sorgu dilidir SQL gibi SQL sözdizimi üzerinde çalışır (select, from, where) İlave esneklikleri vardır (kullanıcı tanımlı operatör ve tipler ile sorgular) Örnek OQL Sorgusu Örnek bir sorgu şu şekildedir “siyah renkli ürünlerin isimleri nelerdir?” Select distinct p.name From products p Where p.color = “black” SQL ve OQL için doğrudur ama sonuçlar farklıdır. Kaynak Tablo Product no Name Color P1 Ford Mustang Black P2 Toyota Celica Green P3 Mercedes SLK Black SQL için sonuç Name Ford Mustang Mercedes SLK İfade bir ilişkisel veritabanını sorgular. Geriye satırlardan oluşan bir tablo döner OQL için sonuç String String Ford Mustang Mercedes SLK İfade bir nesne tabanlı veritabanını sorgular. Geriye nesnelerin bir koleksiyonu döner. SQL ve OQL Karşılaştırma SQL ve OQL sorguları birbirine çok benzer, hatta bazen aynıdırlar Gerçekte, ise onlar çok farklı sonuç verirler Sorgu sonuçları: OQL SQL Object Collection of objects Tuple Table Nesneye Dayalı SQL veya SQL3 Örnek nesne tabanlı veritabanı yönetim sistemleri şunlardır – ORACLE8, DB2, v.s. Yeni özellikler – “ilişkisel” & “nesne tabanlı” İlişkisel özellikler – yeni veri tipleri, genişletilmiş semantik (anlam), ilave güvenlik ve aktif bir veritabanı Nesne tabanlı özellikler – fonksiyon ve prosedür desteği Kullanıcı Tanımlı Veri Tipleri Bir “row type” örneği oluşturma Örnek: create row type AddressType( street char(50), city char(20)); create row type StarType( name char(30), address AddressType); Veri Tiplerinin Oluşturulması create table Address of type AddressType; create table MovieStar of type StarType; Row types örnekleri tablolardaki satırlardır Örnek Sorgu “Columbus” şehrinde yaşayan film yıldızlarının adresleri ve isimlerini bul: select MovieStar.name, MovieStar.address.street from MovieStar where MovieStar.address.city = “Columbus”; Karmaşık veri ve Sorgular Bir su kaynağı yönetimi örneği Eyalet ölçeğinde bir projenin veritabanı Resim slaytlarının bir kütüphanesini içeriyor İndeksleme daha önceden belirlenen kavramlara göre yapılıyor – maliyetli Sorgu tipleri Coğrafik yerleşimler Rezerv seviyeleri Son zamanlardaki debi durumları v.s. Bu sorgularla ilgili olarak; Bu veritabanı bir topografik harita ile eşleştirilmeli (konumlar veritabanında tutulmalı) Her bir slayt için başlıklar incelenmeli Resimden anlayan programlar gerçeklenmeli Resimler denetlenmeli doğru özellikler bulunmalı Sorguların bu tipi adanmış yöntemlere ihtiyaç duyar Fonksiyon Oluşturma create function one() returns int4 as ‘select 1 as RESULT' language 'sql'; // one() fonksiyonu geriye 1 değerini döndürmektedir. Yazım dili SQL dir. select one() as answer; Answer 1 Tablo Oluşturma create table slides ( id int, date date, caption document, picture CD_image, method containsName (name varchar) returns boolean as external name ‘matching’ language ‘C’ ); // c dilinde matching adında bir fonksiyon yazılmış ve bu fonksiyon bir metnin içerisinde başka bir metnin geçip geçmediğini bulmaktadır. create table landmarks( name varchar (30), location point); Gerçekleştirim Örnek sorgu – Sacramento’da su seviyesi düşük bir rezervin resmini bul select P.id from slides P, landmarks L where IsLowWaterLevel (P.picture) and P.containsName (L.name) and L.name = “Sacramento”; L.name = “Sacramento” ve P.containsName (L.name) ve IsLowWaterLevel (P.picture) şartlarını sağlayan resimleri bul. L.name = “Sacramento” normal bir eşleşme, P.containsName (L.name) bir fonksiyon çalışır ve geriye true-flase şeklinde bir değer döndürür. IsLowWaterLevel (P.picture) resimden su seviyesinin düşük veya yüksek olduğunu tespit eden ve geriye true veya false şeklinde değer döndüren bir fonksiyon çalışır.