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.

Benzer belgeler