İlişkisel veritabanı örnekleri. İlişkisel veritabanı modelinin temel hükümleri. Karmaşık örnekleme kriterleri

  • 14.06.2019

ilişkisel model

İlişkisel veritabanı modeli, 1969 yılında E.F. Codd (E.F. Codd). İlişkisel veritabanları hakkında bazı giriş bilgileri için, genel bakış makalesine bakın “ DB ve DBMS"2. Şu anda ilişkisel veritabanları baskın olduğundan, bu makalede (makalelerde olduğu gibi)" Veri açıklaması”, “Veri işleme" ve " Veri tabanı tasarımı”2) ilişkisel modelin en temel kavramları ayrıntılı olarak incelenir.

Hemen, ilişkisel veritabanları teorisinin orijinal olarak titiz bir matematiksel dilde formüle edildiğini ve şeylerin özünü en iyi tanımlayan katı, resmi olarak tanımlanmış matematiksel kavramlar olduğunu not ediyoruz. Aynı zamanda, çoğu durumda, yapmaya çalışacağımız sunumun şeffaflığı lehine terminolojinin titizliğinden çok fazla zarar görmeden feda etmek mümkündür.

İlişkisel modelin arkasındaki temel fikir aşağıdaki gibidir. Veritabanı bir dizi sırasız tablolar(en basit durumda - bir tablodan). Tablolar, prosedürel olmayan (bildirimsel) işlemlerle manipüle edilebilir - istekler, sonuçları da tablolardır.

Genellikle "ilişkisel" kelimesi ( ilişkisel) "ilişkisel model" terimi, bağlantıların ilişkisel bir veritabanında kurulduğu gerçeğine dayalı olarak yorumlanır ( ilgili olmak) tablolar arasında. Bu açıklama uygundur, ancak kesin değildir. Codd'un orijinal terim sisteminde, bağlantı terimleri ( ilişkiler), Öznitellikler ( Öznitellikler) ve demetler ( demetler) çoğumuzun daha aşina olduğumuz tablolar, sütunlar (alanlar) ve satırlar (kayıtlar) terimlerini kullandığımız yerlerde kullanılmıştır.

Konu alanının bilgisel bir modelini oluştururken (bkz. DB ve DBMS”, “Veri tabanı tasarımı”2) öne çıkmak varlıklar(nesneler), bunlar tarif edilir özellikler modelleme amaçları için önemli olan a (özellikler, nitelikler) ve varlıklar arasında ilişkiler kurulur. Bilgibilimsel ilişkisel modelden veribilimsel ilişkisel modele geçiş aşamasında tablolar tam olarak karşımıza çıkar. Tipik olarak, her varlık bir tablo ile temsil edilir. Tablonun her satırı (bir kayıt) varlığın bir örneğine karşılık gelir ve her alan bazı özellikleri (özniteliği) tanımlar..

Örneğin, her birinin soyadı, adı, soyadı, TIN, ikamet ettiği ülke ve doğum tarihi dahil olmak üzere kişiler hakkında bilgi depolamamız gerekirse, o zaman varlık tam olarak kişidir ve belirtilen veriler niteliklerdir. Varlığın kendisi doğal olarak tablonun adı olur.

Tablo "Kişi"

İlişkisel model, tablodaki her satırın benzersiz olmasını gerektirir, yani. böylece herhangi iki satır, en az bir özniteliğin değerinde farklılık gösterir.

Geleneksel tablo biçimi, verilerin kendisini sunmanız gerektiğinde kullanışlıdır. Yukarıdaki örnekte olduğu gibi, yalnızca yapı- alan adları, daha sonra netlik, diyagramlarda kullanım kolaylığı ve yerden tasarruf açısından, aşağıdaki gibi tasvir etmek daha uygundur:

Anahtarlar

Anahtar tablolarbu tabloda benzersiz olan değerleri içeren bir alan veya alanlar grubudur.... Anahtar, tablodaki karşılık gelen satırı benzersiz bir şekilde tanımlar. Anahtar bir alandan oluşuyorsa, genellikle basit eğer birkaç tanesinden - bileşik... Yukarıdaki örnekte, anahtar TIN alanıdır (TIN'lerin ülke içinde benzersiz olduğunun bilindiğini düşünüyoruz).

Bileşik anahtarlı bir tablo örneğine bakalım. Hava durumu tahmin sitelerinin bilgileri şu şekilde sunması alışılmadık bir durum değildir: her tarih için tahmini sıcaklık gece, sabah, öğleden sonra ve akşam gösterilir. Belirtilen bilgileri saklamak için aşağıdaki biçimde bir tablo kullanabilirsiniz:

Bu tabloda ne Tarih alanı, ne Saat, ne de Sıcaklık anahtar değildir - bu alanların her birinde değerler tekrarlanabilir. Ancak Date + Time of day alanlarının kombinasyonu benzersizdir ve benzersiz bir şekilde bir tablo satırını tanımlar. Bu bileşik anahtardır.

Çoğu zaman, bir anahtar seçiminin açık olmadığı bir durum vardır. İlk örneğe geri dönelim. Diyelim ki, soyadı, adı, soyadı, TIN, doğum tarihi, sivil pasaportun seri ve numarasının ve yabancı pasaportun seri ve numarasının saklanması gerektiğini varsayalım. Tablo böyle görünecek.

Bu tabloda seçilebilecek en fazla üç anahtar vardır. Bunlardan biri basit (TIN), diğer ikisi bileşik (Seri + Sivil pasaport numarası ve Seri + Yabancı pasaport numarası). Böyle bir durumda, geliştirici, veritabanının düzenlenmesi açısından en uygun anahtarı seçer (genel durumda, değeri araması en az zaman alan anahtar). Bu durumda seçilen anahtar genellikle ana olarak adlandırılır veya öncelik, bir anahtar ve bir anahtarın yapılabileceği diğer sütun kombinasyonları mümkün veya alternatif anahtarlar. Tabloda her zaman en az bir olası anahtar olduğuna dikkat edin, çünkü satırlar tekrarlanamaz ve bu nedenle tüm sütunların kombinasyonunun olası bir anahtar olması garanti edilir.

Tabloları görüntülerken, tabloların birincil anahtarlarını vurgulamak gelenekseldir. Örneğin, ilgili alanların altı genellikle çizilir. Ve Microsoft Access, önemli alanları kalınlaştırır.

Bir anahtarın seçimindeki belirsizlikten daha sık olarak, geliştiriciler, saklanması gereken veriler arasında bir anahtarın olmamasıyla karşı karşıya kalırlar. Benzer bir gerçek, konu alanını analiz etme sürecinde kurulabilir. Örneğin, basit bir kişi listesi kaydetmeniz gerekiyorsa - adlar, soyadlar, soyadı ve doğum tarihleri, o zaman bu özellik kümesinde hiçbir anahtar yoktur - iki farklı kişinin tamamen aynı verilere sahip olduğu düşünülebilir. . Bu durumda, yapay olarak ek bir alan, örneğin benzersiz bir kişi numarası girmeniz gerekir. Böyle bir anahtar bazen literatürde denir vekil... Oldukça sık, verimlilik nedenleriyle bir vekil anahtar da tanıtılır. Örneğin, bir tablonun uzun bir bileşik anahtarı varsa, geliştiriciler genellikle ek bir kısa sayısal yedek anahtar sunar ve bunu birincil anahtar yapar. Genellikle bu, örneğin bir dize gibi "uygunsuz" (arama için etkisiz) veri türüne sahip basit bir anahtar olsa bile yapılır. Bu tür işlemler artık teori ile ilgili değildir, ancak pratikte oldukça yaygındır.

Dikkatli okuyucu, fazlalık alanlar dahil edilerek anahtarın neredeyse her zaman genişletilebileceğini (tüm tablo alanlarını içermedikçe) fark edecektir. Resmi olarak, böyle bir anahtar bir anahtar olarak kalacaktır, ancak pratik açıdan bakıldığında, bu sadece bir kavram oyunudur. Anahtarın uzunluğunu (karmaşıklığını) en aza indirmeye çalışmak her zaman gerekli olduğundan, bu tür anahtarlar mümkün bile sayılmaz.

Normal formlar, normalleştirme

Kağıda veya Word'de çizebileceğimiz her tablo ilişkisel veritabanı tablosu olamaz. İlişkisel bir veritabanında kullanılabilecek her tablo, ilişkisel model gereksinimi açısından doğru değildir.

Birinci olarak, bir sütundaki tüm verilerin aynı türde olmasını gerektirir(türleri için bkz.Veri açıklaması”2). Bu açıdan, aşağıdaki örnek tartışmak bile anlamsız:

İkincisi, tabloya birincil anahtar atanmasını gerektirir.

Bu gereksinimler gereklidir, ancak yeterli değildir. İlişkisel veritabanları teorisi, "normal formlar" olarak adlandırılan kavramı - tablolardaki verileri düzenlemek için gereksinimler - tanıtır. Normal formlar, gereksinimler daha katı hale geldikçe sırayla numaralandırılır. Düzgün tasarlanmış bir veritabanında tablolar en az üçüncü normal formdadır. Buna göre, ilk üç normal formu ele alacağız. Yukarıda formüle edilen iki temel gereksinimi karşılayan tablolarla uğraştığımızı hatırlayın.

İlk normal form (1NF)

İlk normal form, tabloda yer alan tüm verilerin atomik olması gerektiğini belirtir.(bölünmez). Karşılık gelen atomik veri türlerinin listesi DBMS tarafından belirlenir. 1NF gereksinimi tamamen doğaldır. Bu, her kaydın her alanının bir dizi veya başka bir veri yapısı değil, yalnızca bir değer içermesi gerektiği anlamına gelir. 1NF'de olmayan anlamlı bir tablo örneği verelim. Belirli bir konudaki öğrencilerin not listelerimiz olduğunu varsayalım.

Değerlendirme alanının değeri atomik olmadığı için tablo 1NF gereksinimlerini karşılamamaktadır.

Notların listesini sunmanın olası bir yolu, makalenin yönergelerinde yazılmıştır. "Veri tabanı tasarımı" 2.

İkinci normal form (2NF)

Bir tablonun 1NF'de olması ve anahtar olmayan her sütunun tamamen birincil anahtara bağlı olması durumunda ikinci normal formda olduğu söylenir. Başka bir deyişle, her alanın değeri tamamen birincil anahtarın değeri tarafından belirlenmelidir. Birincil anahtara bağımlılığın, ayrı bileşenine (bileşik anahtar durumunda) değil, tam olarak anahtara bir bütün olarak bağımlılık olarak anlaşıldığını belirtmek önemlidir. İşte 2NF'de olmayan bir tablo örneği. Bunu yapmak için hava tahmini örneğine geri dönelim ve tabloya başka bir sütun ekleyelim - gün doğumu zamanı (bu tamamen akla yatkın bir örnektir, bu tür bilgiler genellikle hava durumu tahmin sitelerinde verilir).

Hatırladığımız gibi, bu tablonun bir bileşik anahtarı Date + Time of day vardır. Sıcaklık alanı tamamen birincil anahtara bağlıdır - bununla ilgili bir sorun yoktur. Ancak Gündoğumu alanı yalnızca Tarih alanına bağlıdır.Günün saati, gün doğumu saatini doğal olarak etkilemez.

Burada şu soruyu sormak yerinde olur: 2NF'nin pratik anlamı nedir? Bu kısıtlamaların kullanımı nedir? Çıkıyor - büyük. Diyelim ki yukarıdaki örnekte geliştirici 2NF gereksinimlerini görmezden geliyor. Birincisi, sözde fazlalık- gereksiz verilerin depolanması. Sonuçta, belirli bir tarihe sahip bir kayıt için gün doğumu zamanı zaten kaydedilmişse, o zaman belirli bir tarihe sahip diğer tüm kayıtlar için aynı olmalıdır ve genel olarak konuşursak, onu saklamaya gerek yoktur.

“Olması gereken” sözlerine dikkat edelim. Ve değilse? Gerçekten de, veritabanı düzeyinde, bu hiçbir şekilde kontrol edilmez - tablodaki anahtar bileşiktir, tarihler aynı olabilir (ve büyük olasılıkla olacakları anlamda). Ve hiçbir resmi kısıtlama (ve “bu olamaz” anlayışımız bunun için geçerli değildir) aynı tarih için farklı gün doğumu zamanlarının belirtilmesini yasaklamaz.

Üçüncü normal form (3NF)

Bir tablonun 2NF ile eşleşmesi ve anahtar olmayan tüm sütunların karşılıklı olarak bağımsız olması durumunda 3NF'de olduğu söylenir.

Sütunların birbirine bağımlılığını aşağıdaki gibi anlamak uygundur: sütunlardan birini diğerini değiştirmeden değiştiremezseniz, sütunlar karşılıklı olarak bağımlıdır.

İşte 3NF'de olmayan bir tablo örneği. Belki de ülkenin farklı bölgelerinde yaşayan insanların ev telefon numaralarını saklamak için basit bir adres defteri örneğini düşünün.

Bu tabloda, anahtar olmayan sütunlar Şehir ve Şehir kodu arasında bir ilişki vardır, bu nedenle tablo 3NF'de değildir.

Geliştiricinin, yukarıdaki bağımlılığın varlığını konu alanını analiz ederek belirlediğine dikkat edin - böyle bir çarpışma herhangi bir resmi yöntemle görülemez. Konu alanının özelliklerini değiştirdiğinizde sütunlar arasındaki bağımlılık ortadan kalkabilir. Örneğin, aynı şehir içinde farklı kodlar girilirse (Moskova'da 495 ve 499 gibi), ilgili sütunlar 3NF gerekliliklerinin ihlali açısından ilişkili olmaktan çıkar.

İlişkisel veritabanları teorisinde, daha yüksek dereceli formlar da dikkate alınır - Boyes'in normal formu - Codd, 4NF, 5NF ve hatta daha yüksek. Bu formlar büyük pratik öneme sahip değildir ve geliştiriciler kural olarak her zaman 3NF'de durur.

Veritabanı normalleştirme

Normalleştirme, veritabanı tablolarını seçilen bir normal forma dönüştürme işlemidir. 2NF'ye normalleştirme, kural olarak, ayrışmaya iner - bir tabloyu birkaçına bölme. 3NF'ye normalleştirme genellikle bağımlı (hesaplanmış) sütunları kaldırarak yapılabilir. Bazı durumlarda 3NF'ye normalleştirirken ayrıştırma da yapmanız gerekir.

Çok tablolu veritabanları, tablolar arasındaki ilişkiler, yabancı anahtarlar

Uygulamada, tek tablolu veritabanları oldukça nadirdir, çünkü bir etki alanı veritabanını modelleme açısından bir tablonun varlığı, bir varlığın varlığı anlamına gelir. Buna karşılık, birkaç varlığın varlığı, genellikle bunlar arasındaki ilişkilerin varlığı anlamına gelir.

Tam bir veritabanı tasarlamayı amaçlamadan, çok tablolu veritabanlarındaki ilişkileri göstermek için bir örnek düşünün.

Sınıflarına göre gruplandırılmış öğrencilerin ve belirli konuları öğreten öğretmenlerin olduğu bir okulla uğraştığımızı varsayalım. Dört varlığı hemen ayırt ederiz: öğrenciler, öğretmenler, sınıflar ve konular. Bu varlıklar bize zaten dört tablo veriyor.

Daha sonra, varlık öznitelikleri sorununu çözmemiz gerekiyor - ne tür bilgileri saklayacağız. Örneğimiz yalnızca tanıtım amaçlı olduğundan, saklanan bilgi miktarını en aza indirmeye çalışacağız. Her öğrencinin soyadını ve adını, sınıf için - paralelin içindeki sınıfı tanımlayan paralel sayı ve harf, öğretmen için - konu için soyadı, adı ve soyadı - yalnızca onun adı.

Şimdi birincil anahtar sorunu ele almamız gerekiyor. Prensipte öğrenci ve öğretmen tablolarının bir anahtarı yoktur, bu yüzden onlara bir vekil sayısal anahtar gireceğiz - bir sayı. Sınıf ve madde tabloları genellikle anahtarlara sahiptir. Sınıflar tablosunda anahtar bileşiktir, Paralel sayı + Harf niteliklerinden oluşur ve nesneler tablosunda basit bir anahtar tek bir alandan oluşur - nesnenin adı. Anahtarlardan bahsettiğimizde, bileşik anahtarlardan veya dizeler gibi uygunsuz türlerdeki anahtar alanlardan kurtulmak için genellikle verimlilik nedenleriyle yedek anahtarların eklendiğinden bahsetmiştik. Yapacağımız şey bu. Tabloların her birine bir vekil sayısal anahtar ekleyelim.

Sonuç olarak, açıklanan varlıklara karşılık gelen aşağıdaki tablo grubunu alacağız.

Hangi konu alanıyla uğraştığımızı anlayarak, varlıklarımızın kendi başlarına var olmadıklarını biliriz - bunlar yukarıda ana hatlarıyla belirttiğimiz bazı ilişkilerle bağlantılıdır. Ama onları teknik olarak nasıl bağlayabilirim? Ek alanlar ve hatta ek tablolar eklemeden yapamazsınız. Varlıklar arasındaki ilişkileri sırayla ele alalım.

Bir öğrenciyi belirli bir sınıfa atamak için “Öğrenci” tablosuna ek bir alan Sınıf numarası ekleyeceğiz. (Türünün "Sınıf" tablosundaki Sınıf numarası alanının türü ile tamamen örtüşmesi gerektiği açıktır.) Artık "Sınıf" ve "Sınıf" tablolarını, alanların çakışan değerlerine göre bağlayabiliriz. Sınıf numarası (Bu alanlara yanlışlıkla aynı ad vermedik, pratikte bu genellikle ciltleme alanlarında kolayca gezinmek için yapılır). “Sınıf” tablosundaki bir kaydın “Öğrenci” tablosundaki birçok kayda karşılık gelebileceğini unutmayın (ve pratikte büyük olasılıkla karşılık gelir - tek öğrencili bir sınıfı hayal etmek zordur). Bu tür tabloların “ilişki” ile ilişkili olduğu söylenir. birden çok”. Ve "Öğrenci" tablosundaki Sınıf Numarası alanı çağrılır. yabancı anahtar... Gördüğünüz gibi, yabancı anahtarların amacı tabloları birbirine bağlamaktır. Yabancı anahtarın her zaman ilgili tablonun birincil anahtarını ifade ettiğini unutmayın (yani yabancı anahtar “çok” tarafındadır). İlişkili birincil anahtar denir ebeveyn bu terim daha az yaygın olarak kullanılmasına rağmen.

Söylenenleri Microsoft Access tarzında bir şema ile gösterelim (Access Data Scheme hakkında daha fazla bilgi için makaleye bakın) "Veri açıklaması" 2).

Şimdi öğretmenleri ve konuları düşünelim. Konu alanını analiz ederken (tek yol budur - sonuçta, gerçek durum resmi modelin kendisinden çıkarılamaz), “öğretmen” ve “özne” varlıkları arasındaki bağlantı türünün bundan farklı olduğunu fark ederiz. yukarıda tartışılan. Ne de olsa, birçok öğretmen yalnızca bir konuyu öğretemez, ancak bir öğretmen birçok konuyu öğretebilir. Böylece, bu varlıklar arasında bir bağlantı vardır” çoktan çoka”. Ek alanları tanıtmak artık yeterli değil (deneyin!). Çoktan çoğa ilişkiler her zaman ek bir tablo tanıtılarak çözülür. Yani aşağıdaki yapıya sahip olan “Öğretmen-Konu” tablosunu düzenleyeceğiz:

Tablo "Öğretmen-Konu"

Bu tablo, alanlarından ikisinden oluşan bir bileşik anahtara sahiptir. Hem Öğretmen tablosu hem de Konu tablosu bu tabloyla bir-çok ilişkisi içinde ilişkilidir (elbette her iki durumda da “çok” Öğretmen-Konu tarafındadır). Buna göre, “Öğretmen-Konu” tablosunda (her ikisi de yasak olmayan bileşik birincil anahtarın parçasıdır) ilgili tablolarla bağlantı kurmaya yarayan iki yabancı anahtar vardır.

Uygulamada, kabul edilen "bire çok" ve "çoktan çoğa" ilişkilere ek olarak, "ilişki" de vardır. bire bir”. Teori açısından, böyle bir ilişki ilgi çekici değildir, çünkü bire bir ilişki ile birbirine bağlanan iki tablo her zaman basitçe bir araya getirilebilir. Ancak, gerçek veritabanlarında, veri işlemeyi optimize etmek için bire bir ilişki kullanılır. Söylenenleri bir örnekle açıklayalım.

Diyelim ki insanlar hakkında çok çeşitli bilgiler saklıyoruz - çeşitli belgelerinin, telefon numaralarının, adreslerinin vb. verileri. Büyük olasılıkla, bu verilerin çoğu çok nadiren kullanılacaktır. Ve çoğu zaman sadece bir soyadına, isme, soyadına ve telefon numarasına ihtiyacımız var. O zaman iki tabloyu organize etmek ve bire bir ilişki içinde birbirine bağlamak mantıklıdır. Sık kullanılan bilgileri bir (küçük) tabloda ve geri kalanını başka bir tabloda saklayın. Doğal olarak, bire bir ilişkideki tablolar aynı birincil anahtara sahiptir.

Bütünlük kuralları

İlişkisel model, veritabanı bütünlüğü için iki genel kural tanımlar: nesne bütünlüğü ve referans bütünlüğü.

bütünlük kuralı nesnelerÇok basit. o tabloların birincil anahtarlarının boş değerler içermemesini gerektirir.

bilgi bütünlüğü kuralı yabancı anahtarların ana anahtarlarla tutarsız değerler içermemesini gerektirir... Yukarıda tartışılan örneğe dönersek, örneğin öğrencilerin sadece “Sınıflar” tablosunda numarası belirtilen sınıfa ait olmalarını şart koşmalıyız.

Çoğu VTYS, veri bütünlüğünün nasıl izleneceğini bilir (elbette bu, veri yapılarını tanımlama aşamasında geliştiricinin uygun çabalarını gerektirir). Özellikle, referans bütünlüğünü korumak için mekanizmalar kullanılır basamaklı operasyonlar. Basamaklama, özellikle, bire-çok ilişkisiyle başka bir tabloya bağlanan bir “ana” tablodan bir kayıt silindiğinde, ilgili tüm kayıtların “çok” tablosundan otomatik olarak silinmesi anlamına gelir (VTYS'nin kendisi tarafından, kullanıcı müdahalesi olmadan). Ve bu doğaldır, çünkü bu tür kayıtlar "havada asılı kalır", artık hiçbir şeyle bağlantılı değildirler.

indeksleme

İndeksleme, pratik uygulama açısından son derece önemlidir, ancak saf teori açısından isteğe bağlıdır. İndekslemenin temel amacı, aramayı (ve buna bağlı olarak, veritabanı ile diğer bazı işlemleri) optimize etmektir (hızlandırmaktır). Her durumda indeksleme ek kaynaklar gerektirir (fiziksel düzeyde, genellikle özel indeks dosyaları oluşturulur). Veri değiştirme, indeksleme ile ilgili işlemler yavaşlayabilir, bu nedenle indeksler genellikle nadiren güncellenen ve sıklıkla aranılan tablolardır.

Dizin dosyası, normal bir kitabın dizinine çok benzer. Her dizin değeri için, verilen değeri içeren tablo satırlarının bir listesi saklanır. Buna göre, arama yapmak için tüm tabloya bakmanıza gerek yoktur - sadece dizine bakmanız yeterlidir. Ancak, kayıtların değiştirilmesi, dizinin yeniden oluşturulmasını gerektirebilir. Ve bu ekstra zaman alır.

Elbette, temel bilgisayar bilimleri dersinin bir parçası olarak ilişkisel veritabanı teorisini öğretmek söz konusu değildir! Bununla birlikte, bu makale ansiklopedimiz için çok önemlidir, çünkü bu durumda derslerde tam olarak sunulamayan materyallerle uğraşıyoruz, ancak öğretmenin ona sahip olması gerekiyor. Niye ya?

Birincisi, çünkü bir takım kavramlar sadece temel ders çerçevesinde çalışılmaktadır. Bu, hem verilerin hem de tablo anahtarlarının tablo görünümüdür. Ve hepimiz biliyoruz ki, genel resmi sunmadan sadece bazı kavramları doğru ve kesin olarak ifade etmek çok zordur.

İkincisi, çocuklarla basit veritabanı sorguları yapmak (ilgili materyal makalede sunulmaktadır). "Veri işleme" 2) ilişkisel teori açısından doğru olan tablolarla uğraşmak gerekir. Öğrencilere bu tabloların doğru olduğunu açıklamaya gerek yok ama “eğer olsaydı... tablo yanlış olurdu” ama kötü örnekler kullanmak kabul edilemez.

Uzmanlaşmış bir bilgisayar bilimi kursunda durum temelde farklı olabilir. Uzmanlaşmış sınıflardaki en önemli ve son derece verimli çalışma şekli tasarımdır. Eğitim projeleri çerçevesinde basit veri tabanları geliştirmek mümkündür ve gereklidir ve burada belirtilen teorinin temelleri olmadan yapılamaz. Ancak, aşağıdakiler dikkate alınmalıdır:

Modellenecek alanlar çok büyük olmamalıdır;

Öğrenciler onlara çok aşina olmalıdır (bu anlamda herkes için oldukça sıkıcı olan “Okul” projesi en kötü seçim değildir!);

Teorinin temellerini dinledikten sonra öğrencilerin kendilerinin bir şeyler tasarlayabileceklerini beklemek saflık olur. Her adım onlarla birlikte atılmalı ve eylemleri için ayrıntılı nedenler verilmelidir.

Zamanımızda bilgisayar teknolojisinin ortaya çıkışı, insan faaliyetinin tüm alanlarında bir bilgi devrimine işaret etti. Ancak, tüm bilgilerin küresel İnternet'te gereksiz çöp haline gelmesini önlemek için, malzemelerin sıralandığı, sistematize edildiği ve bunun sonucunda kolayca bulunup sonraki işlemler için sunulabilecekleri bir veritabanı sistemi icat edildi. Üç ana tür vardır - ilişkisel veritabanları, hiyerarşik, ağ.

temel modeller

Veritabanlarının ortaya çıkışına dönersek, bu sürecin oldukça karmaşık olduğu, programlanabilir bilgi işleme ekipmanlarının geliştirilmesinden kaynaklandığı söylenmelidir. Bu nedenle, şu anda modellerinin sayısının 50'den fazla olması şaşırtıcı değil, ancak ana olanlar hiyerarşik, ilişkisel ve pratikte hala yaygın olarak kullanılan ağ olarak kabul ediliyor. Onlar neler?

Hiyerarşik bir ağaç yapısına sahiptir ve aralarında bağlantıların bulunduğu farklı seviyelerdeki verilerden oluşur. DB ağ modeli daha karmaşık bir modeldir. Yapısı hiyerarşik bir yapıya benzer ve şema genişletilir ve geliştirilir. Aralarındaki fark, hiyerarşik modelin kalıtsal verilerinin yalnızca bir ata ile bağlantısı olabilirken, ağ verilerinin birkaç ataya sahip olabilmesidir. İlişkisel bir veritabanının yapısı çok daha karmaşıktır. Bu nedenle, daha ayrıntılı olarak analiz edilmelidir.

İlişkisel bir veritabanının temel konsepti

Böyle bir model 1970'lerde Ph.D. Edgar Codd tarafından geliştirildi. Verileri açıklayan alanları, birbirleriyle olan ilişkilerini, üzerlerinde gerçekleştirilen işlemleri ve en önemlisi bütünlüğünü garanti eden kuralları içeren mantıksal olarak yapılandırılmış bir tablodur. Model neden ilişkisel olarak adlandırılıyor? Veriler arasındaki ilişkilere (lat. Relatio'dan) dayanır. Bu tür veritabanı için birçok tanım vardır. Bilgi içeren ilişkisel tabloların düzenlenmesi ve işlenmesi, bir ağ veya hiyerarşik modele göre çok daha kolaydır. Bu nasıl yapılabilir? Modelin özelliklerini, yapısını ve ilişkisel tabloların özelliklerini bilmek yeterlidir.

Ana unsurları modelleme ve hazırlama süreci

Kendi DBMS'nizi oluşturmak için modelleme araçlarından birini kullanmalı, hangi bilgilerle çalışmanız gerektiğini düşünmeli, tablolar ve veriler arasında ilişkisel tekli ve çoklu ilişkiler tasarlamalı, varlık hücrelerini doldurmalı ve birincil, yabancı anahtarları ayarlamalısınız.

Tablo modelleme ve ilişkisel veritabanı tasarımı Workbench, PhpMyAdmin, Case Studio, dbForge Studio gibi ücretsiz araçlarla yapılır. Detaylı tasarımın ardından grafiksel olarak hazır olan ilişkisel modeli kaydetmeli ve hazır SQL koduna çevirmelisiniz. Bu aşamada veri sıralama, işleme ve sistematizasyon ile çalışmaya başlayabilirsiniz.

İlişkisel modelle ilgili özellikler, yapı ve terimler

Her kaynak kendi unsurlarını kendi tarzında tanımlar, bu yüzden daha az kafa karışıklığı için küçük bir ipucu vermek istiyorum:

  • ilişkisel etiket = varlık;
  • layout = nitelikler = alan adları = varlık sütun başlıkları;
  • varlık örneği = demet = kayıt = tablo satırı;
  • nitelik değeri = varlık hücresi = alan.

İlişkisel bir veritabanının özelliklerine ulaşmak için, hangi temel bileşenlerden oluştuğunu ve ne için olduklarını bilmeniz gerekir.

  1. Öz. İlişkisel bir veritabanında bir tablo olabilir veya içinde depolanan veriler nedeniyle açıklanan nesneleri karakterize eden bir dizi tablo olabilir. Sabit sayıda alanları ve değişken sayıda kayıtları vardır. İlişkisel bir veritabanı modeli tablosu, dizelerden, niteliklerden ve bir düzenden oluşur.
  2. Kayıt - açıklanan nesneyi karakterize eden verileri gösteren değişken sayıda satır. Kayıtlar sistem tarafından otomatik olarak numaralandırılır.
  3. Nitelikler, varlık sütunlarının açıklamasını gösteren verilerdir.
  4. Alan. Bir varlık sütununu temsil eder. Sayıları, tablonun oluşturulması veya değiştirilmesi sırasında belirlenen sabit bir değerdir.

Şimdi, tablonun kurucu öğelerini bilerek, veritabanı ilişkisel modelinin özelliklerine gidebilirsiniz:

  • İlişkisel veritabanı varlıkları iki boyutludur. Bu özellik sayesinde, onlarla çeşitli mantıksal ve matematiksel işlemler yapmak kolaydır.
  • İlişkisel bir tablodaki niteliklerin ve kayıtların değerlerinin sırası keyfi olabilir.
  • Bir ilişkisel tablo içindeki bir sütunun kendi bireysel adı olmalıdır.
  • Bir varlık sütunundaki tüm verilerin sabit bir uzunluğu ve aynı türü vardır.
  • Özünde herhangi bir kayıt, tek bir veri parçası olarak sayılır.
  • Dizeleri oluşturan bileşenler benzersizdir. İlişkisel bir varlıkta yinelenen satır yok.

Özelliklere göre öznitelik değerlerinin aynı tip ve uzunlukta olması gerektiği açıktır. Nitelik değerlerinin özelliklerini ele alalım.

İlişkisel veritabanı alanlarının temel özellikleri

Alan adları aynı varlık içinde benzersiz olmalıdır. İlişkisel veritabanı özniteliği veya alan türleri, varlık alanlarında hangi kategori verilerinin depolandığını tanımlar. İlişkisel bir veritabanı alanı, karakter olarak sabit bir boyuta sahip olmalıdır. Öznitelik değerlerinin parametreleri ve formatı, verilerin içlerinde nasıl düzeltileceğini belirler. "Maske" veya "girdi deseni" gibi bir şey de vardır. Nitelik değerine veri girişinin konfigürasyonunu tanımlamayı amaçlamaktadır. Her halükarda, alana yanlış bir şey yazdığınızda, bir hata mesajı verilmelidir. Ayrıca, alanların öğelerine bazı kısıtlamalar getirilmiştir - doğruluğun ve hatasız veri girişinin kontrol edilmesi için koşullar. Verilerle açık bir şekilde doldurulması gereken bazı gerekli öznitelik değerleri vardır. Bazı öznitelik dizeleri NULL değerlerle doldurulabilir. Alan özniteliklerine boş veri girilmesine izin verilir. Hata bildirimi gibi, sistem tarafından otomatik olarak doldurulan değerler vardır - bu varsayılan verilerdir. Dizine alınmış bir alan, herhangi bir veri için aramayı hızlandırmayı amaçlar.

2B ilişkisel veritabanı tablosu şeması

SQL kullanan modelin ayrıntılı bir şekilde anlaşılması için şemayı örnek üzerinden düşünmek en iyisidir. İlişkisel veritabanının ne olduğunu zaten biliyoruz. Her tablodaki bir kayıt, bir veri öğesidir. Veri fazlalığını önlemek için normalizasyon işlemlerinin yapılması gerekmektedir.

İlişkisel bir varlığı normalleştirmek için temel kurallar

1. İlişkisel tablo için alan adının değeri benzersiz, türünün tek örneği olmalıdır (ilk normal biçim 1NF'dir).

2. Halihazırda 1NF'ye indirgenmiş bir tablo için, tanımlayıcı olmayan herhangi bir sütunun adı, tablonun benzersiz tanımlayıcısına (2NF) bağlı olmalıdır.

3. Halihazırda 2NF'de olan tüm tablo için, tanımlayıcı olmayan her alan, başka bir tanınmayan değerin (varlık 3NF) bir öğesine bağlı olamaz.

Veritabanları: Tablolar Arasındaki İlişkisel İlişkiler

2 ana ilişkisel tablo vardır:

  • Bir-Birçok. 1 numaralı tablonun bir anahtar kaydı, ikinci varlığın birkaç örneğiyle eşleştiğinde gerçekleşir. Çizilen çizginin bir ucundaki bir anahtar simgesi, varlığın "bir" tarafta olduğunu gösterir, çizginin diğer ucu genellikle bir sonsuzluk simgesiyle işaretlenir.

  • Bir varlığın birkaç satırı ile başka bir tablodaki bir dizi kayıt arasında açık bir mantıksal etkileşim olması durumunda "çok-çok" ilişkisi oluşur.
  • İki varlık arasında bire bir birleştirme meydana gelirse, bu, bir tablonun anahtar tanımlayıcısının başka bir varlıkta mevcut olduğu anlamına gelir, o zaman tablolardan biri kaldırılmalıdır, gereksizdir. Ancak bazen, yalnızca güvenlik nedenleriyle, programcılar kasıtlı olarak ikisini birbirinden ayırır. Bu nedenle, varsayımsal olarak bire bir ilişki olabilir.

İlişkisel bir veritabanında anahtarların varlığı

Birincil ve ikincil anahtarlar, veritabanının olası ilişkisini tanımlar. Bir veri modelinin ilişkisel bağlantıları yalnızca bir potansiyel anahtara sahip olabilir, bu birincil anahtar olacaktır. O nasıl biri? Birincil anahtar, belirli bir satır için verilere erişebileceğiniz bir varlık sütunu veya nitelikler grubudur. Benzersiz, benzersiz olmalıdır ve alanları boş değerler içeremez. Birincil anahtar yalnızca bir öznitelikten oluşuyorsa, o zaman basit olarak adlandırılır, aksi takdirde bir bileşen olacaktır.

Birincil anahtara ek olarak, bir de yabancı anahtar vardır. Birçoğu, aralarındaki farkın ne olduğunu anlamıyor. Bir örnek kullanarak onlara daha ayrıntılı bakalım. Yani 2 tablo var: "Dekanlık" ve "Öğrenciler". "Dekanlık" varlığı, "Öğrenci Kimliği", "Tam ad" ve "Grup" alanlarını içerir. "Öğrenciler" tablosu "Ad", "Grup" ve "Ortalama" gibi nitelik değerlerine sahiptir. Öğrenci kimliği birden fazla öğrenci için aynı olamayacağından bu alan birincil anahtar olacaktır. "Öğrenciler" tablosundan "Tam isim" ve "Grup" birkaç kişi için aynı olabilir, "Dekanlık" varlığından öğrenci kimlik numarasına atıfta bulunurlar, bu nedenle yabancı anahtar olarak kullanılabilirler.

İlişkisel Veritabanı Modeli Örneği

Açıklık sağlamak için, iki varlıktan oluşan basit bir ilişkisel veritabanı modeli örneği vereceğiz. "Dekanlık" adında bir tablo var.

Tam teşekküllü bir ilişkisel veritabanı elde etmek için bağlantılar yapmanız gerekir. "IN-72" gibi "IN-41" kaydı "Dekanlık" plakasında birden fazla bulunabilir ve nadir durumlarda öğrencilerin soyadı, adı ve soyadı çakışabilir, bu nedenle bu alanlar olamaz. birincil anahtarı yaptı. "Öğrenciler" varlığını gösterelim.

Görüldüğü gibi ilişkisel veritabanlarındaki alan türleri tamamen farklıdır. Hem dijital hem de sembolik girişler vardır. Bu nedenle tamsayı, char, vachar, tarih ve diğerlerinin değerleri öznitelik ayarlarında belirtilmelidir. "Dekanlık" tablosunda yalnızca öğrenci kimliği benzersiz bir değerdir. Bu alan birincil anahtar olarak alınabilir. "Öğrenciler" varlığından tam ad, grup ve telefon numarası, öğrenci kimliğine atıfta bulunarak yabancı anahtar olarak alınabilir. Bağlantı kuruldu. Bu bire bir ilişki modeline bir örnektir. Varsayımsal olarak, tablolardan biri gereksizdir, kolayca tek bir varlıkta birleştirilebilirler. Öğrenci kimlik numaralarının genel olarak bilinmesini önlemek için iki tablonun varlığı oldukça gerçekçidir.

Veritabanı (DB) - belirli bir konu alanıyla ilgili ve bir bilgisayar aracılığıyla depolanması, biriktirilmesi ve işlenmesi için tasarlanmış, adlandırılmış bir yapılandırılmış veri kümesidir.

İlişkisel Veritabanı (RDB) adları veritabanı şemasındaki şema adlarıyla çakışan bir ilişkiler kümesidir.

Temel konseptler ilişkisel veritabanları:

· Veri tipi- belirli bir sütunun değerlerinin türü.

· Alan adı(etki alanı), tüm geçerli öznitelik değerlerinin kümesidir.

· Bağlanmak(özellik) - nesnenin adlandırılmış özelliğini karakterize eden tablo sütununun başlığı, örneğin öğrencinin adı, siparişin tarihi, çalışanın cinsiyeti vb.

· demet- mantıksal olarak ilişkili özniteliklerin değerlerinin bir koleksiyonu olan bir tablo satırı.

· Davranış(ilişki) - gerçek dünyadaki nesneler hakkında, örneğin öğrenciler, siparişler, çalışanlar, sakinler vb. hakkında bilgileri yansıtan bir tablo.

· Birincil anahtar(birincil anahtar) - tablodaki her bir kaydını benzersiz şekilde tanımlayan bir alan (veya alanlar kümesi).

· alternatif anahtar Birincil anahtarla eşleşmeyen ve bir kaydın örneğini benzersiz olarak tanımlayan bir alandır (veya alanlar kümesi).

· Harici anahtar Değerleri başka bir tablonun mevcut birincil anahtar değerleriyle eşleşen bir alandır (veya alanlar kümesidir). İki tabloyu birbirine bağlarken, ikinci tablonun yabancı anahtarı, birinci tablonun birincil anahtarına bağlanır.

· İlişkisel Veri Modeli (RDM)- iki boyutlu tablolar şeklinde veri organizasyonu.

Her ilişkisel tablo aşağıdaki özelliklere sahip olmalıdır:

1. Tablonun her kaydı benzersizdir, yani. alanlardaki değerler kümesi tekrarlanmaz.

2. Bir satır ve bir sütunun kesişiminde yazılan her değer atomiktir (ayrılmaz).

3. Her alanın değerleri aynı tipte olmalıdır.

4. Her alanın benzersiz bir adı vardır.

5. Girişlerin sırası önemli değildir.

Veritabanının ana unsurları:

Alan- verilerin mantıksal organizasyonunun temel birimi. Alanı tanımlamak için aşağıdaki özellikler kullanılır:

· Ad, örneğin, soyadı, adı, soyadı, doğum tarihi;

· Tür, örneğin, dize, karakter, sayısal, tarih;

· Uzunluk, örneğin bayt cinsinden;

· Sayısal veriler için hassasiyet, örneğin bir sayının kesirli kısmını görüntülemek için iki ondalık basamak.

Kayıt- mantıksal olarak ilgili alanların bir dizi değeri.

dizin- tablolar arasında ilişkiler kurmak için kullanılan kayıt arama işlemini hızlandırmanın bir yolu. İndeksin kullanıldığı tabloya indeksli denir. Endekslerle çalışırken, sınıflandırmanın temeli olan endekslerin organizasyonuna dikkat etmeniz gerekir. Basit bir dizin, tek bir alan veya tek bir alanı işleyen bir Boole ifadesi ile temsil edilir. Bileşik bir dizin, çeşitli işlevleri kullanma becerisine sahip birkaç alanla temsil edilir. Tablo dizinleri bir dizin dosyasında saklanır.


Veri bütünlüğü Tabloları tutarlı (tutarlı) bir durumda tutmaya izin veren (yani, alt tabloda, ana tabloda karşılık gelen kayıtları olmayan kayıtların varlığını engelleyen) bağlantı alanlarıyla verileri korumanın bir yoludur.

Sorgu- veri örnekleme kriterlerini içeren, bir veya daha fazla bağlantılı tabloya formüle edilmiş bir soru. Sorgu, Yapılandırılmış Sorgu Dili (SQL) kullanılarak gerçekleştirilir. Bir veya daha fazla tablodan veri getirmenin bir sonucu olarak, görünüm adı verilen birçok kayıt elde edilebilir.

Veri sunumu- veritabanına kaydedilen (bir veya birkaç tablodan) veri seçimi için adlandırılmış bir sorgu.

Görünüm, aslında bir sorgudan kaynaklanan geçici bir tablodur. İsteğin kendisi ayrı bir dosyaya, rapora, geçici tabloya, diskteki tabloya vb. gönderilebilir.

Bildiri- temel amacı, veri tabanındaki bilgilere dayalı olarak belgelerin tanımlanması ve yazdırılması olan bir sistem bileşeni.

RDB'lerle çalışmanın genel özellikleri:

İlişkisel veri modelinin en yaygın yorumu, onu hemen hemen tüm kitaplarında (çeşitli iyileştirmelerle) yeniden üreten Date'in yorumu gibi görünmektedir. Date'e göre, ilişkisel model, ilişkisel yaklaşımın farklı yönlerini tanımlayan üç bölümden oluşur: yapısal kısım, manipülasyon kısmı ve bütünleyici kısım.

Modelin yapısal kısmında, ilişkisel veritabanlarında kullanılan tek veri yapısının normalleştirilmiş bir n-ary ilişkisi olduğu sabitlenmiştir.

Modelin manipülasyon kısmı, ilişkisel veritabanlarını manipüle etmek için iki temel mekanizmayı öne sürer - ilişkisel cebir ve ilişkisel hesap. İlk mekanizma temel olarak klasik küme teorisine (bazı iyileştirmelerle) ve ikincisi - birinci dereceden yüklem hesabının klasik mantıksal aygıtına dayanır. İlişkisel modelin manipülasyon bölümünün ana işlevinin, herhangi bir belirli ilişkisel veritabanı dilinin göreliliğinin bir ölçüsünü sağlamak olduğuna dikkat edin: ilişkisel cebir veya ilişkisel hesaptan daha az ifade gücü ve gücü yoksa, bir dile ilişkisel denir.


28. ALGORİTMİK DİLLER. ÇEVİRMENLER (ÇEVİRMENLER VE DERLEMELER). ALGORİTMİK DİL TEMEL. PROGRAMIN YAPISI. TANIMLAYICILAR. DEĞİŞKENLER. OPERATÖRLER. BİR VE İKİ BOYUTLU DİZİLERİN İŞLENMESİ. KULLANICI FONKSİYONLARI. ALT PROGRAMLAR. VERİ DOSYALARI İLE ÇALIŞMAK.

Üst düzey dil- kavramları ve yapısı insan algısına uygun bir programlama dili.

algoritmik dil(Algoritmik dil) - programlama dili - algoritma yazmak için tasarlanmış yapay (resmi) dil. Bir programlama dili, kendi açıklamasıyla tanımlanır ve özel bir program olarak uygulanır: bir derleyici veya yorumlayıcı. Algoritmik dillerin örnekleri Borland Pascal, C ++, Basic vb.

Algoritmik bir dilin temel kavramları:

dilin bileşimi:

Ortak konuşma dili dört temel unsurdan oluşur: semboller, kelimeler, deyimler ve cümleler. Algoritmik dil benzer öğeler içerir, yalnızca kelimelere temel yapılar, ifadeler - ifadeler, cümleler - operatörler denir.

semboller, temel yapılar, ifadeler ve operatörler hiyerarşik bir yapı oluşturur, çünkü temel yapılar bir dizi sembolden oluşur.

İfade temel yapılar ve semboller dizisidir,

Şebeke- bir dizi ifade, temel yapılar ve semboller.

Dil açıklaması:

Sembollerin tanımı, dilin izin verilen sembollerinin listelenmesinden oluşur. Temel yapıların tanımı, oluşumlarının kuralları olarak anlaşılır. İfadelerin tanımı, belirli bir dilde anlamlı olan herhangi bir ifadenin oluşumu için kurallardır. Operatörlerin tanımı, dilde izin verilen tüm operatör türlerinin dikkate alınmasından oluşur. Dilin her bir öğesinin açıklaması, SYNTAX ve SEMANTICS tarafından verilir.

Sözdizimsel tanımlar, dil öğelerini oluşturmak için kuralları belirler.

anlambilim sözdizimsel tanımları verilen dilin bu öğelerini kullanmanın anlamını ve kurallarını tanımlar.

dil sembolleri- bunlar, dildeki tüm metinlerin yazıldığı ana bölünmez işaretlerdir.

Temel yapılar bağımsız bir anlamı olan bir dilin minimum birimleridir. Dilin temel sembollerinden oluşurlar.

İfade algoritmik dilde temel yapılar ve sembollerden oluşur, belirli bir değerin hesaplanması için kuralı belirtir.

Şebeke gerçekleştirilecek bazı eylemlerin tam bir tanımını belirtir. Karmaşık bir eylemi tanımlamak için bir operatör grubu gerekebilir.

Bu durumda operatörler birleştirilir. bileşik operatör veya Engellemek. Hareketler operatörler tarafından verilen veriler üzerinde gerçekleştirilir. Veri türleri hakkında bilgi sağlayan algoritmik dil cümleleri, bildirimler veya yürütülemez operatörler olarak adlandırılır. Tek bir algoritma tarafından birleştirilen bir dizi açıklama ve operatör, algoritmik bir dilde bir program oluşturur. Algoritmik bir dil öğrenme sürecinde, algoritmik dili, çalışılan algoritmik dilin tanımının yapıldığı dilden ayırt etmek gerekir. Genellikle hedef dile basitçe dil denir ve hedef dilin tanımının verildiği dile denir. üst dil.

Çevirmenler - (İngilizce tercüman - tercüman) bir tercüman programıdır. Üst düzey dillerden birinde yazılmış bir programı, makine komutlarından oluşan bir programa dönüştürür.

Herhangi bir yüksek seviyeli algoritmik dilde yazılmış bir program, bir bilgisayarda doğrudan çalıştırılamaz. Bilgisayar yalnızca makine talimatlarının dilini anlar. Sonuç olarak, algoritmik bir dildeki bir program, belirli bir bilgisayarın komut diline çevrilmelidir (çevrilmelidir). Bu çeviri, her algoritmik dil ve her bilgisayar türü için oluşturulmuş özel çevirmen programları tarafından otomatik olarak gerçekleştirilir.

Akışın iki ana yolu vardır - derleme ve yorumlama.

1.Derleme: Derleyici(İngilizce derleyici - derleyici, toplayıcı) tüm programı bir bütün olarak okur, çevirisini yapar ve programın tam sürümünü makine dilinde oluşturur ve ardından yürütülür.

saat derleme tüm orijinal program hemen bir dizi makine talimatına dönüştürülür. Bundan sonra, ortaya çıkan program, bilgisayar tarafından mevcut ilk verilerle yürütülür. Bu yöntemin avantajı, çevirinin bir kez yapılması ve ortaya çıkan programın (çoklu) yürütülmesinin yüksek hızda gerçekleştirilebilmesidir. Aynı zamanda, çeviri sırasında bir dil operatörünün yerini yüzlerce hatta binlerce talimat aldığından, ortaya çıkan program bilgisayar belleğinde çok fazla yer kaplayabilir. Ayrıca, çevrilen programın hatalarını ayıklamak ve değiştirmek çok zordur.

2. Tercümanlık: Tercüman(İngilizce tercüman - tercüman, tercüman) programı satır satır çevirir ve yürütür.

saat yorumlar orijinal program neredeyse değişmeden bilgisayar belleğinde saklanır. Yorumlayıcı program, kaynak programın ifadelerini tek tek çözer ve mevcut verilerle derhal yürütülmesini sağlar. Yorumlanan program bilgisayarın belleğinde çok az yer kaplar, hata ayıklaması ve değiştirilmesi kolaydır. Öte yandan, programın yürütülmesi oldukça yavaştır, çünkü her yürütmede tüm operatörler sırayla yorumlanır.

Derlenmiş programlar daha hızlı çalışır, ancak yorumlanmış programların düzeltilmesi ve değiştirilmesi daha kolaydır

Her özel dil, oluşturulma amacına bağlı olarak ya derlemeye ya da yorumlamaya yöneliktir. Örneğin, Pascal genellikle programların hızının önemli olduğu oldukça karmaşık sorunları çözmek için kullanılır. Bu nedenle, bu dil genellikle bir derleyici kullanılarak uygulanır.

Öte yandan, BASIC, satır satır program yürütmenin yadsınamaz avantajları olan acemi programcılar için bir dil olarak oluşturuldu.

Bazen aynı dil için hem derleyici hem de yorumlayıcı bulunur. Bu durumda, programı geliştirmek ve test etmek için yorumlayıcıyı kullanabilir ve ardından yürütmesini hızlandırmak için hata ayıklanmış programı derleyebilirsiniz.

Veritabanı (DB), belirli bir konu alanı, konu veya görevle ilgili, belirli kurallara göre düzenlenen ve bilgisayar belleğinde tutulan nesneler, süreçler, olaylar veya fenomenler hakkında bilgi topluluğudur. Kullanıcıların bilgi ihtiyaçlarının yanı sıra bu veri koleksiyonunun hem bir bütün olarak hem de herhangi bir parçası olarak uygun şekilde saklanmasını sağlayacak şekilde düzenlenmiştir.

İlişkisel veritabanı, her biri belirli bir türdeki nesneler hakkında bilgi içeren, birbirine bağlı bir dizi tablodur. Tablonun her satırı bir nesne (örneğin, araba, bilgisayar, müşteri) hakkında veri içerir ve tablonun sütunları bu nesnelerin çeşitli özelliklerini içerir - nitelikler (örneğin, motor numarası, işlemci markası, şirketlerin telefon numaraları veya müşteriler).

Tablodaki satırlara kayıt denir. Tablonun tüm kayıtları aynı yapıya sahiptir - bunlar, nesnenin niteliklerini depolayan alanlardan (veri öğeleri) oluşur (Şekil 1). Her kayıt alanı bir nesne özelliği içerir ve belirli bir veri tipini temsil eder (örneğin, metin dizisi, sayı, tarih). Birincil anahtar, kayıtları tanımlamak için kullanılır. Birincil anahtar, değerlerin birleşimi tablodaki her kaydı benzersiz bir şekilde tanımlayan bir dizi tablo alanıdır.

Pirinç. 1. Tablodaki nesnelerin adları

Verilerle çalışmak için veritabanı yönetim sistemleri (DBMS) kullanılır. DBMS'nin ana işlevleri:

Veri tanımı (veritabanı yapısının tanımı);

Veri işleme;

Veri yönetimi.

Bir veritabanı yapısının geliştirilmesi, bir veritabanı tasarımında çözülen en önemli görevdir. Bir veritabanının yapısı (tablolarının kümesi, formu ve ilişkileri), bir veritabanı kullanarak uygulamalar oluştururken ana tasarım kararlarından biridir. Geliştirici tarafından oluşturulan DB yapısı, DBMS veri tanımlama dilinde açıklanmıştır.

Herhangi bir DBMS, verilerle aşağıdaki işlemleri gerçekleştirmenize izin verir:

Tablolara kayıt ekleme;

Tablodan kayıtları silme;

Veritabanı tablolarında bir veya birden fazla kayıtta bulunan bazı alanların değerlerinin güncellenmesi;

Belirli bir koşulla eşleşen bir veya daha fazla kaydı arayın.

Bu işlemleri gerçekleştirmek için bir sorgulama mekanizması kullanılır. Yürütülen sorguların sonucu ya belirli kriterlere göre seçilen bir dizi kayıt ya da tablolardaki değişikliklerdir. Veritabanına yapılan sorgular, bunun için özel olarak oluşturulmuş, "yapılandırılmış sorgu dili" (SQL - Structured Query Language) olarak adlandırılan bir dilde oluşturulmaktadır.

Veri yönetimi genellikle verileri yetkisiz erişimden korumak, verilerle çok kullanıcılı çalışma modunu desteklemek ve verilerin bütünlüğünü ve tutarlılığını sağlamak olarak anlaşılır.

yüksek performanslarını sağlayan mevcut dil araçları ve yazılım sistemleri ve veritabanı tasarımı teorisinin temellerinin oluşturulması. Ancak, ilişkisel VTYS'lerin genel kullanıcısı için bu kavramların resmi olmayan eşdeğerleri başarıyla uygulanabilir:

"İlişki" - "tablo" (bazen dosya), "tuple" - "satır" (bazen kayıt), "nitelik" - "sütun", "alan".

Bu, "kayıt"ın "kaydın örneği" anlamına geldiğini ve "alan"ın "alan adı ve türü" anlamına geldiğini varsayar.

İlişkisel veritabanı

İlişkisel bir veritabanı, bir veritabanında saklanması gereken tüm bilgileri içeren bir ilişkiler topluluğudur. Ancak, kullanıcılar böyle bir veritabanını bir tablo koleksiyonu olarak algılayabilirler. Belirtilmelidir:

Her tablo aynı türden satırlardan oluşur ve benzersiz bir adı vardır; Satırlar sabit sayıda alana (sütun) ve değere (birçok

Genel alanlara ve yinelenen gruplara izin verilmez). Başka bir deyişle, tablodaki bir satır ve bir sütunun kesiştiği her konumda, her zaman tam olarak bir değer vardır veya hiçbir şey yoktur;

Bir tablonun satırları mutlaka birbirinden en az tek bir değerle farklı olmalıdır, bu da böyle bir tablonun herhangi bir satırını açık bir şekilde tanımlamayı mümkün kılar;

Tablonun sütunlarına benzersiz adlar atanır ve her birine homojen veri değerleri (tarihler, soyadlar, tam sayılar veya parasal tutarlar) yerleştirilir;

Veritabanının tam bilgi içeriği, açık veri değerleri olarak temsil edilir ve bu sunum yöntemi tektir; Bir tablo üzerinde işlemler yapılırken, bilgi içeriğine bakılmaksızın satırları ve sütunları herhangi bir sırayla işlenebilir. Bu, tablo adlarının ve sütunlarının mevcudiyetinin yanı sıra, belirtilen özelliklere sahip herhangi bir satır veya herhangi bir satır kümesini seçme yeteneği (örneğin, varış noktası "Paris" ve varış zamanı olan uçuşlar) ile kolaylaştırılır.

12'ye kadar).

İlişkisel verileri işlemek

İlişkisel bir veri modeli öneren E.F. Codd ayrıca ilişkilerle (ilişkisel cebir) rahatça çalışmak için bir araç yarattı. Bu cebirin her işlemi, işlenen olarak bir veya daha fazla tablo (ilişki) kullanır ve sonuç olarak yeni bir tablo üretir, yani. tabloları "kesmenize" veya "yapıştırmanıza" izin verir (Şekil 1.5).

Pirinç. 1.5. İlişkisel cebirin bazı işlemleri

İlişkisel cebirin tüm işlemlerini ve hemen hemen her türlü kombinasyonunu gerçekleştirmeye izin veren veri işleme dilleri oluşturulmuştur. Bunlar arasında en yaygın olanı SQL'dir (Yapılandırılmış Sorgu Dili - yapılandırılmış

Sorgu Dili) ve QBE (Örnek Sorgulama). Her ikiside

çok yüksek düzeydeki dillerle ilgilidir, bu sayede kullanıcının hangi verilerin elde edilmesi gerektiğini belirttiği, bunları elde etme prosedürünü belirtmeden.

Bu dillerden herhangi birinde tek bir sorgu ile birden çok tabloyu geçici bir tabloya birleştirebilir ve bu tablodan gerekli satır ve sütunları kesebilirsiniz (seçim ve yansıtma).

İlişkisel Veritabanı Tasarımı, Tasarım Amaçları

Yalnızca küçük kuruluşlar, verileri tam entegre bir veritabanında paylaşabilir. Çoğu zaman, kuruluş çalışanlarının (yani sistemin gelecekteki kullanıcıları) tüm bilgi gereksinimlerini kapsamak ve anlamak neredeyse imkansızdır. Bu nedenle, büyük kuruluşların bilgi sistemleri, genellikle çeşitli bölümlerin birbirine bağlı birkaç bilgisayarı arasında dağıtılan birkaç düzine veritabanı içerir. (Yani büyük şehirlerde, farklı bölgelerde bulunan bir değil, birkaç sebze üssü oluşturulur.)

Ayrı veritabanları, bir veya birkaç uygulamalı problemi çözmek için gerekli tüm verileri veya herhangi bir konu alanıyla (örneğin, finans, öğrenciler, öğretmenler, yemek pişirme vb.) ilgili verileri birleştirebilir. İlki genellikle uygulama veritabanları olarak adlandırılır ve ikincisi konu veritabanları olarak adlandırılır (kuruluşun konularıyla ilgili ve bilgi uygulamalarıyla ilgili değildir). İlki lojistik veya rekreasyon üsleriyle, ikincisi ise sebze ve giyim üsleriyle karşılaştırılabilir.

Konu veritabanları, veri öğeleri kümesi, uygulanan veritabanlarının veri öğeleri kümelerini içerdiğinden, mevcut ve gelecekteki herhangi bir uygulama için destek sağlamaya izin verir. Sonuç olarak, oluşturulan konu veritabanları

Resmi olmayan, değişen ve bilinmeyen sorguları ve uygulamaları (veri gereksinimlerini önceden belirlemenin imkansız olduğu uygulamalar) ele almak için bir çerçeve sağlayın. Bu esneklik ve uyarlanabilirlik, konu veritabanları temelinde oldukça istikrarlı bilgi sistemleri oluşturmayı mümkün kılar; eski uygulamaları yeniden yazmak zorunda kalmadan çoğu değişikliğin yapılabildiği sistemler.

Veritabanı tasarımını mevcut ve öngörülebilir uygulamalara dayandırarak, yüksek verimli bir bilgi sisteminin oluşturulmasını önemli ölçüde hızlandırmak mümkündür. yapısı en yaygın veri erişim yollarını dikkate alan bir sistem. Bu nedenle, uygulamalı tasarım hala bazı geliştiricileri cezbetmektedir. Ancak bu tür bilgi sistemlerinin uygulama sayısı arttıkça uygulanan veritabanlarının sayısı hızla artmakta, veri tekrarlama düzeyi keskin bir şekilde artmakta ve bakım maliyetleri de artmaktadır.

Bu nedenle, dikkate alınan tasarım yaklaşımlarının her biri tasarım sonuçlarını farklı yönlerde etkiler. Hem esnekliğe hem de verimliliğe ulaşma arzusu, hem konu hem de uygulamalı yaklaşımları kullanan bir tasarım metodolojisinin oluşmasına yol açmıştır. Genel durumda, konu yaklaşımı ilk bilgi yapısını oluşturmak için kullanılır ve uygulanan yaklaşım, veri işleme verimliliğini artırmak için onu geliştirmek için kullanılır.

Bir bilgi sistemi tasarlarken, bu sistemin hedeflerini analiz etmek ve bireysel kullanıcıların (kuruluş çalışanları) gereksinimlerini belirlemek gerekir. Veri toplama, kuruluşun varlıklarını ve bu varlıkları kullanan süreçleri inceleyerek başlar. Varlıklar "benzerlik" (belirli eylemleri gerçekleştirmek için kullanım sıklığı) ve aralarındaki ilişkisel bağlantıların sayısına (uçak - yolcu, öğretmen - disiplin, öğrenci - oturum vb.) göre gruplandırılır. En büyük benzerliğe ve (veya) en yüksek ilişkisel bağlantı sıklığına sahip varlıklar veya varlık grupları, konu veritabanlarında birleştirilir. (Genellikle, varlıklar, resmi yöntemler kullanılmadan - "sağduyuya" göre - konu veritabanlarında birleştirilir.

Bir veritabanı tasarlamanın temel amacı, depolanan verilerin fazlalığını azaltmak ve sonuç olarak, kullanılan bellek miktarından tasarruf etmek, fazlalık kopyaları güncellemek için birden fazla işlemin maliyetini azaltmak ve bilgi depolamadan kaynaklanan tutarsızlık olasılığını ortadan kaldırmaktır. farklı yerlerde aynı nesne hakkında. Sözde "temiz" DB projesi ("Her gerçek tek bir yerde"), ilişki normalleştirme metodolojisi kullanılarak oluşturulabilir.

Normalleştirme, verileri eklerken, değiştirirken ve silerken daha iyi özelliklere sahip olan bir tabloyu ikiye veya daha fazlasına bölmektir.

Normalleştirmenin nihai amacı, her bir olgunun yalnızca bir yerde göründüğü bir veritabanı tasarımına sahip olmaktır, yani. bilgi fazlalığı hariçtir. Bu, bellekten tasarruf etmek için çok fazla değil, saklanan verilerin olası tutarsızlıklarını ortadan kaldırmak için yapılır.

İlişkisel bir veritabanındaki her tablo, tablonun her satır ve sütununun kesişiminde her zaman tek bir atomik değer olduğu ve asla böyle bir değerler kümesi olamayacağı koşulunu yerine getirir. Bu koşulu sağlayan herhangi bir tabloya normalleştirilmiş denir. Aslında, normalleştirilmemiş tablolar, yani. Yinelenen gruplar içeren tablolara ilişkisel bir veritabanında bile izin verilmez.

Normalleştirilmiş herhangi bir tablo, otomatik olarak bir tablo olarak kabul edilir. Birincil normal form, 1NF olarak kısaltılır. Yani, kesinlikle konuşursak, "normalleştirilmiş" ve "1NF'de" aynı anlama gelir. Bununla birlikte, pratikte "normalleştirilmiş" terimi genellikle daha dar bir anlamda kullanılır.

- "tamamen normalleştirilmiş", bu, projenin herhangi bir normalleştirme ilkesini ihlal etmediği anlamına gelir.

Şimdi, 1NF'ye ek olarak, daha fazla normal seviye

kötüleştirme - ikinci normal biçim (2NF), üçüncü normal biçim

(3NF), vb. Esasen, bir tablo 1NF'deyse 2NF'dedir.

ve ayrıca, özü aşağıda ele alınacak olan bazı ek koşulları karşılamaktadır. Bir tablo 2NF'deyse 3NF'dedir ve ek olarak başka bir ek koşulu karşılar

vb.

Bu nedenle, her normal form bir bakıma bir öncekinden daha sınırlıdır, ancak aynı zamanda daha arzu edilir. Bunun nedeni, "(N + 1)'inci normal biçim"in, "N'inci normal biçim"in bazı çekici olmayan özelliklerine sahip olmamasıdır. (N+1)'inci normal forma N'inci normal forma göre yüklenen ek koşulun genel anlamı, bu çekici olmayan özellikleri ortadan kaldırmaktır.

Normalizasyon teorisi, tablonun alanları arasında şu veya bu ilişkinin varlığına dayanır. Bu tür bağımlılıkların iki türü tanımlanır:

mantıklı ve belirsiz.

Fonksiyonel bağımlılık. Tablonun B Alanı, aynı tablonun A alanına işlevsel olarak bağlıdır, ancak ve ancak herhangi bir anda, A alanının farklı değerlerinin her biri için B alanının farklı değerlerinden yalnızca biri mutlaka mevcutsa. A ve B alanlarının bileşik olabileceği varsayılır.

Tam fonksiyonel bağımlılık. B Alanı tam işlevde

Bir bileşik A alanına işlevsel bağımlılık, işlevsel olarak A'ya bağlıysa ve işlevsel olarak A alanının herhangi bir alt kümesine bağlı değilse.

Çok değerli bağımlılık... A Alanı, B alanını belirsiz bir şekilde tanımlar.