Veri Tabanı Sistemleri 3.hafta Flashcards
Veri tipi seçimi, veri tabanı sisteminin hangisi olduğu neden önemlidir?
MySQL, Oracle, PostSQL vb. ile çalışılıyorsa bunlara bağımlılık oluşur ve bunlarla devam etmek gerekir.Çünkü sistem veri tabanına bağımlıdır. örn integer yerine mysql veri tipi mediuminteger (3 byte) veri tipi kullanırsan sonrasında da mysql kullanmak zorunda kalırız.
Veri tabanı bağımlılığını gidermek
Veri tipi bağımsız sitemleri kurmak güçtür ancak bağımsız olur.
Domain nedir?
Domain yaratmak
Create Domain
domain etki kümesidir. Tabloda yıllar yada film isimleri vb. sütunları domaindir.
Create domain ile yaratırken kısıtlar, veri tipi bilgileri verilerek oluşturulur.
Drop (delete) domain komutu domaini siler.
relation →
tuple →
attribute →
relation → table,
tuple → row,
attribute → column
Birincil anahtar olmadan tablo oluşturma
Veri tabanları kendine has komutlarla id oluşturabilir. Ancak her veritabanının komutları farklıdır.
Drop komutunun geri dönüşü yoktur.
Verilen komuta dikkat edilmelidir.
SQL büyük küçük harfle yazımı…
Geleneksel olarak SQL büyük harfle yazılır çünkü bazı sistemlerde bu fark eder.
Veri tabanı oluşturulan işletim sistemi de önemlidir.
Windowsta çalışan Linuxta format farkı nedeniyle çalışmayabilir.
Table creation, tablo oluşturma komutlarında null yada not null seçilebilir. boş geçilemez yada geçilir. Varsayılan değer nedir?
Nullable yani boş geçilebilirdir.
Veri tabanında kısıtlar koyarak girilebilecek verilerin aralığı belirlenebilir.
Uniqueness
Veri tabanına veri eklenirken aynı satırın girişini tekrar yapmaz.
Physical Delete
Logical Delete
Logical delete’de aslında silme işlemi yapılmıyor ancak sadece gösterilmiyor.
Bağlantıları logical delete’e atıf yapılacaksa dikkat edilmesi gerekli.
Index Nedir, ne işe yarar?
Full table scan işini veri tabanı sistemleri kendileri yapabilirler. Bu işi indexleme ile yaparak çok kısaltırlar.
işlem karmaşıklığı nedir?
işlem karmaşıklığı bir işlemi gerçekleştirmek için gerekli çabayı ifade eder. n eleman sayısı ise bazı algoritmalarda n^2 kadar işlem gerekebilir.
Indexing işleminde tek sıra liste yerine ne kullanılırsa aranan veri bulma işi hızlanır?
Binary tree yöntemiyle arama işlemi çok kısaltılır.
Logn yöntemi ile büyük verilerin arama işlemi daha da kısalır.
Indexleme örneği;
Logn yöntemi daha çok elemanlı veri içerisinde daha kolay bulma yöntemi sağlar.
Örn. 4 milyar elemanlı bir veride aranan eleman en fazla 32 adımda bulunabilir.
Integer yerine string verililerde indexleme neye göre yapılır?
Integer için sayının diğerine göre büyük yada küçük olmasına bakılırken string için sözlük sırasına göre binary ve logn yöntemi kullanılabilir.
Indexleme hangi durumlarda çok verimli olmaz.
Eğer sürekli giriş (insert) ve güncelleme (update) yapıyorsam indexlemenin hızlı çalışabilmesi için sürekli dengede tutacak şekilde güncellemem gerekir. Bu da ayrı bir iş ve maliyettir. Bu durumlarda full scan indexin daha mantıklıdır.
Data Manipulation Language DML
Tabloya satır eklemek - Insert Into
Row deletion uyarısız siler.
Update ile güncellemede SET ile koşullar girilir. WHERE ile hangi veride yapılacağı belirtilir.
INSERT INTO MOVIE VALUES (
…
…
burada kolonlar belirtilmeyebilir.
Budurumda veriler, kolonlar hangi sıradaysa bu sıraya göre verilmiş olmalıdır.
Referential Integrity
Foreign Key Example
Okun ucu boşta kalmayacak kuralını gerçeklemeye çalışırız.
Foreign Key silme yada güncelleme durumlarında ne olacağı da seçilir.
NULL yada atıf yapılanları silme gibi seçenekler vardır.
Tanımlama yapılmamışsa silinene atıf yapılmış yada başka satırlarca gösterilmişse genelde default olarak izin vermez. ON DELETE RESTRICT. Bunun dışında silinir.
Örnek: Referential Integrity Example yansısına bak.
Kodlamada WAMP kullanacağız.
Aynı şeyleri DATAGRIP ile de yapabiliriz. Veri tabanına göndereceği kod cümleciğini kendisi oluşturur kullanıcı dostu arayüzü sayesinde. Yani IDE gibi bir şey. Third part generator.
Primary Key özelliği nedir
Tekrarlamamalı ve dolu olmalıdır.
Bunun dışında değiştirilebilir.
MySQL ve DataGrip’i kurmaya çalış.
Update yapıldığında bağlantılarına da Cascade yani yansıma olması doğaldır.
Ancak silindiğinde ne yapılmalıdır?
Bazı durumlarda başta restriction yapılarak yine de silmek isteniyorsa bağlı satırların elle manuel SQL script ile silmesi sonrasında istenen satırın silinmesi sağlanır.
Bazı durumlarda SET NULL ile NULL yazması istenebilir.
Veri üzerinde yapılabilecek işlemlerin kısaltması ve anlamları nelerdir?
CRUD
Create
Read
Update
Delete
Bunlara DML data manipulation language deniyor
Referential integrity (referans bütünlüğü) foreign anahtarlarda bir satırın silinmesiyle bozulursa ne olur?
don’t allow if used: RESTRICT, NO_ACTION
I reflect the change to affected tuples: CASCADE
I assign null value: SET NULL
I assign default value: SET DEFAULT
Satır silme işleminde silinen satıra herhangi bir ok gelmiyorsa varsayılan ayarlar neye karar verir?
silmeye karar verir.
On Delete Restrict komutu kesinlikle silmemek demek değildir. Bir referans alıyorsa silmemek anlamına gelir.
birden fazla okun gösterdiği anahtar satırımız varsa ve birine restrict diğerine cascade komutu verilmişse ne olur?
Kısıta aykırı bir restrict durumu olması hiçbirinin silinmemesine neden olur.
ÖZET
CREATE TABLE
CREATE DOMAIN
DROP DOMAIN/TABLE
CREATE INDEX
ALTER TABLE
ALTER CONSTRAINT işleminde veritabanları eklemeyi önceki girdiler ters düşebileceği için kabul etmeyebilir.
DELETE FROM table_name
WHERE kolon_ismi
Burada kısıt belirtilmezse ne olur?
Bütün satırlar silinir ve geri getirilemez.