Veri Tabanı Yönetim Sistemleri 1 Ders 10 Veri Sözlüğü ve DDL

Slides:



Advertisements
Benzer bir sunumlar
4 SQL- Yapısal Sorgulama Dili
Advertisements

VERİ TABANI YÖNETİMİ Ders 10: Oracle Nesneleri
SQL Komutlar 5 Sibel SOMYÜREK.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
Veri Tabanı Yönetim Sistemleri
Veri Tabanı Yönetim Sistemleri
SQL (STRUCTURED QUERY LANGUAGE)
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 1 Ders 10 VTYS Yaşam Döngüsü ve DDL
SQL Sibel SOMYÜREK.
Veri Tabanı Yönetim Sistemleri 2 Ders 4 Oracle'da VT Nesneleri Yaratma
SQL Komutları (2) Uzm. Murat YAZICI.
SİSTEM VERİTABANLARI. Sistem veritabanlarını tanıma. Kendi Login’imizi oluşturma Neler İşleyeceğiz?
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
Yeni Veritabanı Oluşturma
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
Veri Tabanı Yönetim Sistemleri Hafta 2 İlişkisel VTYS Temel Kavramlar.
Veri Tabanı Yönetim Sistemleri Hafta 1. 2 Temel Kavramlar Veri Olguların, kavramların, veya talimatların, insan tarafından veya otomatik yolla iletişim,
SUNU HAZIRLAMA PROGRAMI: powerpoint
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
Veri Tabanı Yönetimi Dersi 4. Laboratuvarı Arş. Gör. Pınar CİHAN.
EurobankTekfen SQL Server DBA Turgay Sahtiyan.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
İNTERNET PROGRAMLAMA -2. Veritabanı Nedir? Veritabanı, bilgilerin düzenli bir ş ekilde saklandı ğ ı yapılardır. De ğ i ş kenlerdeki bilgiler ve formlardan.
1. Ders Bir, İki ve Üç Yazarlı Eserlerin Kataloglanması Prof. Dr. Bülent Yılmaz Arş. Gör. Tolga Çakmak.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı Arş. Gör. Pınar CİHAN.
Veri Tabanı Yönetimi Dersi 4. Laboratuvarı Constraint-View-Sequence Union-Intersection-Except Exısts-In Arş. Gör. Pınar CİHAN.
BİLGİSAYAR PROGRAMLAMA DERSİ
Excel 2007.
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Transaction ve Örnekler
Varlık-İlişki Modeli Örneği
Ünite 8: Olasılığa Giriş ve Temel Olasılık Hesaplamaları
Veri Tabanı Yönetim Sistemleri 2 Ders 4 Oracle'da VT Nesneleri Yaratma
TETİKLEYİCİLER ve HATA KONTROLÜ
5. HAFTA Öğr. Gör. Yunus KÖKVER
Veri Kontrol Dili (DCL) DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır. Diğer bir deyişle verilere.
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SQL.
PARAMETRİK HİPOTEZ TESTLERİ
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
DML ile veri ekleme, silme ve değiştirme
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
Tezin Olası Bölümleri.
SQL (STRUCTURED QUERY LANGUAGE)
VERİTABANI YÖNETİM SİSTEMLERİ 3-Normalizasyon
Bilgisayar II 8 Mart Mart
Stored Procedure Öğr.Gör.Metin Akbulut.
NİŞANTAŞI ÜNİVERSİTESİ
SQL Server - Views.
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-4-DML
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
5.6 İKS Dokümantasyonu Her çiftçi için belli dokümanlar ve İKS seviyesinde tutulmalıdır. ( İKS Rehberi 5.6’da belirtildiği gibi) Bu kayıtlar hem iç hem.
NORMALİZASYON Öğr.Gör. Yunus Emre GÖKTEPE
GİRİŞ Öğr.Gör. Yunus Emre GÖKTEPE
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
SQL VIEW.
NİŞANTAŞI ÜNİVERSİTESİ
Bellek içi raporlama sistemleri için denormalizasyon uygulaması
Sunum transkripti:

Veri Tabanı Yönetim Sistemleri 1 Ders 10 Veri Sözlüğü ve DDL Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü

Veri Sözlüğü Veri sözlüğü (sistem kataloğu) veri hakkında veri (metadata) içerdiği için veri tabanının veri tabanı olarak tanımlanabilir. Veri sözlüğünde her ilişki şeması (tablo) için; şemanın ve içerdiği niteliklerin adları, niteliklerin etki alanları, ilişki anahtarı, bütünlük sınırları ve eğer tanımlandıysa görünüm (view) tanımları saklanmaktadır.

Veri Sözlüğünde Saklanan Diğer Bilgiler İlişki şemalarının indeksleri ile ilgili bilgiler (indekslenen özellikler, indeks tipleri) Çoğu sistemde yetkili kullanıcıların adları ve durumları Hiyerarşik veri modeli gibi yüksek düzeyli modellerde her ilişki şemasındaki sıra sayısı ve uygulanan saklama şekli (bloklu-bloksuz)

Veri Sözlüğünde Saklanan Fiziksel Bilgiler Veri öğesinin tipi (sayı, karakter, tarih, …) Karakter ise uzunluğu Sayı ise tipi (tam sayı, ondalıklı sayı, …) Tarih ise biçimi (mm.dd.yyyy, …) Kullanılacak araçlar (disk, teyp, …) Veri tabanının saklanacağı birimler (c:\, …) Erişim denetimi …

Veri Sözlüğü Örneği sistem-katalog-şeması (şema-adı, niteliklerinin-sayısı) nitelik-şeması (nitelik-adı, şema-adı, etki-alanı-tipi, yeri) kullanıcı-şeması (kullanıcı-adı, şifresi, grubu) indeks-şeması (indeks-adı, tipi, özellikleri) görünüm-şeması (görünüm-adı, tanımı) kullanıcı-grubu-şeması (…)

SQL Server’da veri sözlüğü ile ilgili sorgular select * from sys.databases select * from sysusers select * from sys.tables select * from sysobjects where name in ('Öğrenciler', 'Notlar', 'Dersler') select * from syscolumns where id = (select id from sysobjects where name = 'Öğrenciler') sys.tables altında sadece tablolar, sys.objects altında ise tüm nesneler yer alır. sysobjects ile sys.objects, syscolumns ile de sys.columns farklı kolonlara sahiptirler. Bazı kolonların ise sadece isimleri farklıdır: Yukarıdaki sorguda sys.objects ve sys.columns kullanırsanız id yerine object_id yazmalısınız.

SQL Server'da Sistem Veritabanları Master: Sistem veri sözlüğünün saklandığı vt. Diğer veritabanları ve dosyalar, sistem düzeyinde kullanıcılar, prosedür ve fonksiyonlar gibi bilgiler saklanır. Her instance için ayrı bir master vt vardır. Model: yeni bir vt oluşturulurken örnek alınan vt. MSDB: SQL Server Agent servisinin yaptığı işlemlere ait bilgilerin tutulduğu vt. TempDB: SQL Servisi başlarken model vt örnek alınarak oluşturulan geçici vt. Order by kullanıldığında sıralanacak kayıtlar, indeks oluştururken yapılan ara işlemler, … bu vt altında saklanır.

Data Definition Language (DDL) Veri Tanımlama Dili (Data Definition Language) veritabanındaki nesneleri yaratmak için kullanılan CREATE, yok etmek için kullanılan DROP ve nesne üzerinde değişiklik işlemleri için kullanılan ALTER komutlarını içerir. DDL komutlarını kullanma yetkisi veritabanının ve tüm nesnelerin yaratılmasından sorumlu olan kişilere (DBA gibi) verilir.

Önemli Not SQL'de kullanılan SELECT komutu ve DML komutları (INSERT, DELETE, UPDATE) genellikle tüm VTYS’lerde aynı şekilde kullanılır. DDL (CREATE, DROP, ALTER) ve DCL (GRANT, REVOKE) komutlarında ise bazı farklılıklar vardır. Örneğin SQL Server’da önce bir LOGIN nesnesi yaratılır, daha sonra yaratılan bir kullanıcı (USER) bu LOGIN nesnesi ile ilişkilendirilir. Dolayısı ile SQL Server’daki “CREATE USER” komutunun yazımı ile ORACLE’daki yazım farklıdır. Bu derste ve sonraki derslerde verilecek olan tüm DDL ve DCL komutları SQL Server’a göre verilmiştir.

Veritabanı İşlemleri Veritabanı yaratma: CREATE DATABASE yeniDB Veritabanı yok etme: DROP DATABASE yeniDB Veritabanı üzerinde değişiklik yapma: ALTER DATABASE yeniDB SET AUTO_SHRINK OFF Veritabanı model veritabanının kopyası gibi oluşturulur Veritabanı kullanımda ise yok edilemez Veritabanının boyutunun otomatik olarak küçülmesi özelliğini kapatma

Tablo Yaratma USE yeniDB; CREATE TABLE Bolumler( BolumNo numeric(2) PRIMARY KEY, BolumAdi varchar(20) NOT NULL, Sehir varchar(20) ) Hangi veritabanı altında tablo yaratılacak ise öncelikle o veritabanı USE komutu ile seçilir Bolumler tablosu dbo şeması altında yaratılır. "dbo.Bolumler" şeklinde de yazılabilirdi. numeric ile decimal veri tipleri aynıdır (ORACLE'da number). Boyut olarak precision (virgülden önce ve sonra toplam basamak sayısı) ve scale (virgülden sonraki kısmı) verilir. Tek değer verildi ise o kadar basamağı olan bir tamsayıyı ifade eder. Precision en fazla 38 olabilir, varsayılan değer ise (18,0)'dır. decimal [ (p[ ,s] )] numeric[ (p[ ,s] )]

Bütünlük Kısıtlamaları (Integrity Constraints) Veri bütünlüğünü sağlamak için 5 farklı bütünlük kısıtlaması tanımlanabilir: Primary Key, Foreign Key, Unique, Not Null, Check Kısıtlamalar tablolar oluşturulurken tanımlanabileceği gibi tablolar oluşturulduktan sonra da tanımlanabilirler. Ancak tabloya önceden girilmiş olan veriler varsa, bu verilerin tanımladığımız kısıtlamaya uyması gerekir.

Tablo Yaratma (tüm kısıtlamalar ile) CREATE TABLE Personel( PerNo numeric CONSTRAINT pk_Personel PRIMARY KEY, Ad varchar(10) CONSTRAINT nn_Ad NOT NULL, Soyad varchar(10) CONSTRAINT nn_Soyad NOT NULL CONSTRAINT upper_Soyad CHECK(Soyad=UPPER(Soyad)), Gorev varchar(9), Yonetici numeric CONSTRAINT fk_yonetici REFERENCES Personel(PerNo), BaslamaTarihi date DEFAULT getdate(), Maas numeric(10,2) CONSTRAINT ck_Maas CHECK(Maas>900), Komisyon numeric(9,0) DEFAULT NULL, BolumNo numeric(2) CONSTRAINT nn_BolumNo NOT NULL CONSTRAINT fk_BolumNo REFERENCES Bolumler(BolumNo) ) Varsayılan değer sistem tarihi Bu örnekte her bütünlük kısıtlamasına isim de verilmiştir. Tabloyu yaratma script'i SQL Server tarafından oluşturulduğunda constraint tanımları sonradan verilir.

Tablo ve Sütun Kısıtlamaları Eğer kısıtlama sütun tanımının yanında verilirse sütun kısıtlaması, tüm sütunlar tanımlandıktan sonra CONSTRAINT ile başlayan ifadede verilirse tablo kısıtlaması olarak adlandırılır. CREATE TABLE Tedarikci_Urun ( TedarikciNo numeric NOT NULL, UrunNo numeric NOT NULL, Miktar numeric NOT NULL DEFAULT 0, CONSTRAINT pk_TedUr PRIMARY KEY (TedarikciNo, UrunNo) ) Column Constraint Table Constraint PK iki sütun ile olacaksa bu şekilde tanımlanması şart. SQL Server tarafından oluşturulan script'ilerde tek sütun bile olsa PK bu şekilde kullanılır.

Primary Key Constraint Birincil anahtar kısıtlayıcısı, bir tabloya girilen her bir kaydın belirtilen sütun değeri olarak diğer kayıtlardan ayırmak üzere tekil ve farklı bir değer girmeye zorlar. Bir tabloda sadece bir tane Primary Key Constraint tanımlanabilir ve bu sütun (veya sütunlar) asla NULL değer kabul etmez.

Foreign Key Constraint Bir tablonun belli sütununa girilecek değerleri başka bir tablonun indekslerle tekilleştirilmiş bir sütunundaki değer kümesi ile sınırlandırmak için kullanılır. CREATE TABLE tablo_ismi ( sütun tanımlamaları..., CONSTRAINT kısıtlama-ismi FOREIGN KEY(sütun-ismi) REFERENCES tablo-ismi(sütun-ismi) ) Personel tablosunu yaratırken yaptığımız gibi, bir sütun tanımından sonra "sütun kısıtlaması" olarak yaparsanız FOREIGN KEY (sütun-ismi) kısmı yazılmaz.

Unique Constraint Bazı durumlarda, bir tabloda birincil anahtar alanın yanı sıra başka bazı sütunlardaki verilerin de tekrarlanmaması istenebilir. Bu türden alanlar için Unique Constraint tanımı yapılır. Unique Constraint’i, Primary Key Constraint’ten ayıran en önemli iki özellik, Unique bir tabloda birden fazla olabilir. Ancak Primary Key tablo başına sadece bir adet olabilir (ama çok alandan oluşabilir). Unique Constraint tanımlı bir alan NULL değerler kabul edebilir. Tanımlanması Primary Key ile benzerdir (hem sütun hem de tablo düzeyinde tanımlarken sadece Primary Key yerine Unique yazılması yeterlidir)

Not Null Constraint Eğer bir sütun için her zaman veri girilmesi zorunlu olsun isteniyorsa “Boş Olamaz Kısıtlayıcısı” kullanılır. SQL Server tabloyu yaratan scripti oluştururken hem boş olabilenleri hem de olamayanları belirtir (her sütun tanımının yanına ya NULL ya da NOT NULL yazar). CREATE TABLE Personel( PerNo numeric(18, 0) NOT NULL, Ad varchar(10) NOT NULL, Soyad varchar(10) NOT NULL, Gorev varchar(9) NULL, Yonetici numeric(18, 0) NULL, … )

Check Constraint Bir sütuna girilebilecek değerleri, belli kıyaslara karşı kontrol eden kısıtlayıcı türüdür ve üç farklı amaç için kullanılabilir: Bir sütuna girilebilecek değerleri belli bir küme ile kısıtlamak için Bir sütuna girilebilecek değerleri belli bir formata uygunluğunu denetlemek için Bir sütuna girilebilecek değerleri, başka sütunlar üstünden bir kıyas ile denetlemek için CREATE TABLE tablo-ismi( sütun tanımlamaları..., CONSTRAINT kısıtlama-ismi CHECK(ifade) FOR sütun-ismi ) Personel tablosunu yaratırken sütun düzeyinde yapmıştık (FOR gereksiz): Maas numeric(10,2) CONSTRAINT ck_Maas CHECK(Maas>900)

İndeks Kullanımı İndeksler verilere hızlı erişim amacıyla kullanılır. OLAP sistemlerde mümkün olduğu kadar çok indeks kullanılır, OLTP’de ise fazlası uygulamaya zarar verebilir (özellikle çok sık güncellenen tablolarda). Primary Key’ler otomatik olarak indekslenir, Foreign Key’ler de genellikle indekslenmesi gereken alanlardır. WHERE koşulu ile seçilen sütunlar, aynı sırada indeks yapılmalıdır.

Ne zaman indeks kullanmalı? Bir veya daha fazla sayıda sütun sıklıkla bir where koşulunda yada tablo birleştirme işleminde kullanılıyorsa indeks kullanmak hızı arttıracaktır. Eğer sorgunun sonucu tablodaki satırların %2 yada daha azı gibi küçük bir bölümünü döndürecek ise indeks kullanımı faydalı olacaktır. Sütundaki değerlerin çoğu NULL ise indeks kullanımı iyi sonuç verir. Sütundaki değerler büyük ölçüde birbirini tekrar eden değerler ise (cinsiyet sütununda sadece iki farklı değer olması gibi) indeks kullanmanın anlamı yoktur. Tablo çok sık güncelleniyorsa, indeksin de güncellenmesi gerekeceği için zaman kaybı yaratır.

İndeks Yaratma Aşağıdaki iki indeks aynı anda mevcut olabilir, çünkü sütun sıraları farklıdır. CREATE INDEX Per_index1 ON Personel(Soyad, Gorev); CREATE INDEX Per_index2 ON Personel(Gorev, Soyad);

View (Görünüm) Access'teki sorgu nesnesi gibi, gösterdiği veriyi gerçekte saklamayan sadece SELECT ifadesini saklayan nesnedir. Neden view kullanılır? Veri erişimini sınırlamak için Karmaşık sorguları kolay hale getirmek için Veri bağımsızlığını sağlamak için Aynı verinin farklı görünümlerini sunmak için Eğer Primary Key View’da yer alıyorsa DML (insert, delete, update) işlemleri o view üzerinde uygulanabilir.

View Yaratma CREATE VIEW Personel_view AS SELECT PerNo, Ad, Soyad, Maas, Sehir FROM Personel P, Bolumler B WHERE P.BolumNo = B.BolumNo AND B.BolumNo = 10 GO CREATE VIEW Bolum20 AS SELECT Ad, Soyad, Maas*12 [Yıllık Maas] FROM Personel WHERE BolumNo = 20 GO komutu işlem kümesini (batch) bitirip, önceki GO'dan itibaren tüm komutları sunucuya gönderir. SQL Server kendi oluşturduğu scriptlerde her komut sonrası GO kullanır. SQLCMD üzerinde GO kullanımı ifadenin çalıştırılmasını sağlar (ORACLE'da ifadeyi ; ile bitirip Enter'a basma yerine burada GO yazıp Enter'a basma var).

Synonym Tablo, view, sequence, procedure, function, package veya başka bir synonym için alternatif bir isimdir. CREATE SYNONYM per FOR Personel;

ALTER (Tanımda Değişiklik Yapma) Tabloya sütun ekleme ALTER TABLE Personel ADD Adres varchar(250) Tabloya kısıtlama ekleme ADD CONSTRAINT fk_BolumNo FOREIGN KEY(BolumNo) REFERENCES Bolumler(BolumNo) ADD sonrasındaki kısıtlama tanımı, tablo seviyesindeki kısıtlama tanımı ile aynıdır

DROP (Yok Etme) Tüm veritabanı nesnelerini yok etmek için DROP komutu kullanılır. Sadece nesnenin türü ve adı yazılır: DROP TABLE Personel DROP INDEX Per_index2 ON Personel ALTER içinde ADD'in tersi olarak ta DROP kullanılır: ALTER TABLE Personel DROP COLUMN Adres