İlişkisel veritabanı. Üst düzey fonksiyonlar. İlişkisel bir veritabanının temel konsepti

  • 12.05.2019

İlişkisel veritabanları

İlişkisel bir veritabanı, yapısı sütunlar ve satırlardan oluşan bir veya daha fazla ilişkili tablodan oluşur.

İlişkisel veritabanları aşağıdaki gösterimi kullanır:

İlişki bir tablodur;

Alan - birkaç nesne (sütun) için aynı türden bir kayıt kümesi;

Bir tanımlama grubu (kayıt), bir nesneye karşılık gelen birkaç kayıt kümesini içeren bir tablo satırıdır;

Nitelik - bir alan satırına giriş.

Varlık, bir veritabanında depolanan ayırt edilebilir herhangi bir varlıktır.

Anahtar alanlar

Veritabanındaki her ilişki, ilişkinin her kaydını benzersiz şekilde tanımlayan bir alan (veya birkaç alandan oluşan bir koleksiyon) içermelidir. Bu tür alanlar, birkaç ilişkiden gelen verileri bağlamanıza ve sonuçta tek bir veritabanı oluşturmanıza olanak tanır. Bu alanlara anahtar alanlar denir.

Aşağıdaki anahtar türleri ayırt edilir:

potansiyel anahtar- özellikleri kaydın benzersizliğini sağlayan bir alan (bu tür alanlar için birkaç tane olabilir).

Birincil anahtar- ana anahtar olarak seçilen potansiyel anahtarlardan biri (kural olarak, minimum öznitelik uzunluğuna sahiptir).

Harici (ikincil) anahtar- başka bir ilişkinin birincil anahtarına bağlantı sağlayan bir veya daha fazla ilişki alanı.

Anahtarı oluşturan alanların sayısına bağlı olarak, aşağıdakiler ayırt edilir:

Basit anahtar- kaydı benzersiz olarak tanımlayan tek bir özellikten oluşur (öğrenci not defteri numarası).

bileşik anahtar- toplamı kaydı benzersiz bir şekilde belirleyen iki veya daha fazla özellikten oluşur (bir kişinin pasaportunun serisi ve numarası).

Bir ilişkinin, ilişkinin her kaydını benzersiz şekilde tanımlayan benzersiz bir alanı varsa, birincil anahtar olarak kullanılabilir, ancak özniteliklerinin değerleri tüm kayıtlar için farklı olmalıdır. Kişilerin ad ve soyadlarını birincil anahtar olarak kullanmamalısınız, çünkü bunlar tekrarlanabilir ve aynı ilişkide aynı ad ve soyadına sahip kişiler olabilir. Şu anda veritabanında kayıtlı tüm kişilerin soyadları farklı olsa bile, kişilerin kompozisyonundaki değişiklik nedeniyle ilişkideki kayıtlar zaman içinde değişebileceğinden, soyadı alanı anahtar alan olarak kullanılmamalıdır. veritabanlarına kaydedilir.

Birincil anahtar seçerken, bir anahtar alanının niteliklerinin boş olamayacağını da göz önünde bulundurmalısınız. Alan boş değerlere izin veriyorsa, birincil anahtar olarak kullanılmamalıdır.

Ayrıca birincil anahtar seçerken değerlerinin değişmemesi gerektiğini de göz önünde bulundurmalısınız. Eğer değişirse, bu alanla ilgili tüm ilişkilerde bu değişikliğe ilişkin bilgilerin güncellenmesi sağlanmalıdır. Sabit değerli bir birincil anahtar kullanmak, veritabanındaki ilişkiler arasında senkronizasyonu kolaylaştırır.

Genellikle, birincil anahtar olarak yapay olarak oluşturulmuş bir alan seçilir, öznitelik değerleri gerçek bir anlamı yoktur. Bu tür alanlar olabilir kod veya Sayı, bu alanlar dizenin yalnızca sayısal gösterimini içerir ve genellikle bu gösterim bilgisayar tarafından bir sayaç kullanılarak ayarlanır. Bu tür kodlar, gerçek verileri içeren alanların aksine, değişikliğe tabi olmadıkları için değişikliğe tabi değildir. Soyadı, Telefon numarası, Adres vb. değiştirebilir ve tekrarlayabilir.

Bir kaydın benzersizliğinin bir alan ile sağlanamaması durumunda, iki veya daha fazla alandan oluşan bir bileşik anahtar kullanılır. Bileşik anahtarın bir örneği, pasaportun seri ve numarası alanları olabilir; ayrıca pasaportun serisi ve numarası kaydın benzersizliğini garanti edemez, çünkü aynı seriye ve aynı numaraya sahip pasaportlar var, ancak seri ve iki pasaport sayısının aynı anda tesadüfi mümkün değil.

  • Tercüme
Çevirmenin notu: makale oldukça eski (2 yıl önce yayınlanmış) olmasına ve yüksek bir başlık taşımasına rağmen, yine de ilişkisel veritabanları ile NoSQL veritabanları arasındaki farklar, avantajları ve dezavantajları hakkında iyi bir fikir verir ve ayrıca kısa bir genel bakış sağlar. ilişkisel olmayan depolama.

Son zamanlarda, birçok ilişkisel olmayan veri tabanı ortaya çıktı. Bu, neredeyse sınırsız isteğe bağlı ölçeklenebilirlik istiyorsanız, ilişkisel olmayan bir veritabanına ihtiyacınız olduğunu gösterir.

Bu doğruysa, bu güçlü ilişkisel veritabanlarının savunmasız olduğu anlamına mı geliyor? Bu, ilişkisel veritabanlarının günlerinin geçtiği ve yakında biteceği anlamına mı geliyor? Bu makalede, çeşitli durumlar için ilişkisel olmayan veritabanlarının popüler kaymasına bir göz atacağız ve bunun ilişkisel veritabanlarının geleceğini etkileyip etkilemediğini göreceğiz.

İlişkisel veritabanları yaklaşık 30 yıldır var. Bu süre zarfında, ilişkisel depolamayı sona erdirmesi beklenen birkaç devrim patlak verdi. Elbette bu devrimlerin hiçbiri gerçekleşmedi ve bunlardan biri ilişkisel veritabanlarının konumunu bir zerre kadar sarsmadı.

Temel bilgilerle başlayalım

İlişkisel bir veritabanı, bir tablo (varlık) koleksiyonudur. Tablolar sütunlardan ve satırlardan (tupler) oluşur. Kısıtlamalar tablolar içinde tanımlanabilir, tablolar arasında ilişkiler vardır. SQL kullanarak, bir veya daha fazla tablodan veri kümeleri döndüren sorgular çalıştırabilirsiniz. Tek bir sorgu içinde, veriler birkaç tablodan birleştirilerek elde edilir (JOIN), çoğu zaman tablolar arasındaki ilişkileri tanımlayan birleştirme için aynı sütunlar kullanılır. Normalleştirme, verilerde tutarlılığı ve fazlalık olmamasını sağlamak için bir veri modeli yapılandırma sürecidir.


İlişkisel veritabanlarına, ilişkisel veri tabanı yönetim sistemleri (RDBMS) aracılığıyla erişilir. Kullandığımız hemen hemen tüm veritabanı sistemleri Oracle, SQL Server, MySQL, Sybase, DB2, TeraData vb. Gibi ilişkiseldir.

Bu baskınlığın nedenleri açık değildir. İlişkisel veritabanlarının tarihi boyunca, veri yönetiminde basitlik, sağlamlık, esneklik, performans, ölçeklenebilirlik ve birlikte çalışabilirliğin en iyi karışımını tutarlı bir şekilde sunmuşlardır.

Ancak, tüm bu özellikleri sağlamak için ilişkisel depolama dahili olarak inanılmaz derecede karmaşıktır. Örneğin, basit bir SELECT sorgusu, optimize edicinin doğrudan çalışma zamanında değerlendireceği yüzlerce potansiyel yürütme yoluna sahip olabilir. Tüm bunlar kullanıcılardan gizlenir, ancak RDBMS içinde, maliyet tahmin algoritmaları gibi şeylere dayalı ve sorguya en uygun olan bir yürütme planı oluşturur.

İlişkisel veritabanı sorunları

İlişkisel depolama basitlik, sağlamlık, esneklik, performans, ölçeklenebilirlik ve uyumluluğun en iyi karışımını sağlarken, bunların her birinde belirli bir özelliğe odaklanan benzer sistemlerden daha iyi performans göstermesi gerekmez. Bu büyük bir sorun değildi, çünkü ilişkisel VTYS'lerin ezici üstünlüğü herhangi bir eksiklikten daha ağır basıyordu. Ancak, geleneksel RDB'ler ihtiyaçları karşılamıyorsa, her zaman alternatifler vardı.

Bugün durum biraz farklı. Uygulamaların çeşitliliği artar ve bununla birlikte listelenen özelliklerin önemi artar. Ve veritabanlarının sayısı arttıkça, bir özellik diğerlerini gölgede bırakmaya başlar. Bu ölçeklenebilirlik. Web hizmetleri gibi yüksek yük koşulları altında daha fazla uygulama çalıştığından, ölçeklenebilirlik gereksinimleri çok hızlı bir şekilde değişebilir ve önemli ölçüde büyüyebilir. Kendi sunucunuzda ilişkisel bir veritabanınız varsa, ilk sorunu çözmek çok zor olabilir. Sunucu yükünün bir gecede üç katına çıktığını varsayalım. Donanımı ne kadar hızlı yükseltebilirsin? İkinci problemin çözümü de ilişkisel veritabanlarının kullanılması durumunda zorluklara neden olur.

İlişkisel veritabanları, yalnızca tek bir sunucuda bulunuyorlarsa iyi ölçeklenir. Bu sunucunun kaynakları tükendiğinde, daha fazla makine eklemeniz ve yükü aralarında dağıtmanız gerekecektir. İlişkisel veritabanlarının karmaşıklığının ölçeklenebilirliğe karşı oynamaya başladığı yer burasıdır. Sunucu sayısını birkaç değil, yüzlerce veya binlerce olarak artırmaya çalışırsanız, karmaşıklık bir büyüklük sırasına göre artar ve ilişkisel veritabanlarını bu kadar çekici kılan özellikler, onları bir sunucu olarak kullanma şansını hızla sıfıra indirir. büyük dağıtılmış sistemler için platform.

Bulut satıcıları rekabetçi kalabilmek için bu sınırlamayla bir şekilde mücadele etmelidir, çünkü ölçeklenebilir veri depolama olmadan ne tür bir bulut platformudur. Bu nedenle, kullanıcılara ölçeklenebilir depolama alanı sağlamak istiyorlarsa satıcıların yalnızca bir seçeneği vardır. İlişkisel veritabanlarında bulunan diğer özellikler pahasına da olsa, daha ölçeklenebilir diğer veritabanları türlerini kullanmanız gerekir.

Bu avantajlar ve bunlara yönelik mevcut talep, yeni bir veritabanı yönetim sistemleri dalgasına yol açmıştır.

Yeni dalga

Bu tür bir veritabanına genellikle anahtar-değer deposu denir. Aslında resmi bir ad yoktur, bu nedenle belge odaklı, öznitelik odaklı, dağıtılmış veritabanları (ilişkisel de olabilseler de), parçalanmış sıralanmış diziler, dağıtılmış karma tablolar ve depolama bağlamında bulabilirsiniz. tip. Bu adların her biri sistemin belirli özelliklerini belirtirken, hepsi anahtar/değer depolaması diyeceğimiz bir temanın varyasyonlarıdır.

Ancak, buna ne derseniz deyin, bu "yeni" veritabanı türü o kadar da yeni değildir ve her zaman temel olarak ilişkisel veritabanlarının kullanımının uygun olmayacağı uygulamalar için kullanılmıştır. Ancak, web ve bulut üzerinde ölçeklenebilirliğe ihtiyaç duyulmadan bu sistemler yüksek talep görmedi. Şimdi zorluk, belirli bir sistem için hangi depolama türünün daha uygun olduğunu belirlemektir.
İlişkisel veritabanları ve anahtar/değer depoları temelde farklıdır ve farklı sorunları çözmek için tasarlanmıştır. Özellikleri karşılaştırmak, yalnızca aralarındaki farkı anlamanıza olanak tanır, ancak bununla başlayalım:

Depolama özellikleri

İlişkisel veritabanı Anahtar/değer depolama
Bir veritabanı tablolardan oluşur, tablolar sütunlardan ve satırlardan oluşur ve satırlar sütun değerlerinden oluşur. Bir tablodaki tüm satırlar aynı yapıya sahiptir.
Etki alanları için tablolarla bir analoji çizebilirsiniz, ancak etki alanları için tabloların aksine, veri yapısı tanımlanmamıştır. Alan adı, içine istediğiniz her şeyi koyabileceğiniz bir kutudur. Aynı etki alanındaki kayıtlar farklı yapılara sahip olabilir.
Veri Modeli 1 önceden tanımlanmıştır. Güçlü bir şekilde yazılmıştır ve veri bütünlüğünü sağlamak için kısıtlamalar ve ilişkiler içerir.
Kayıtlar, her kaydın kendisiyle ilişkilendirilmiş dinamik bir nitelikler kümesine sahip olduğu anahtarla tanımlanır.
Veri modeli, uygulamanın işlevselliğine değil, içerilen verilerin doğal temsiline dayanır.
Bazı uygulamalarda, nitelikler yalnızca dizeler olabilir. Diğer uygulamalarda öznitelikler, programlamada kullanılan türleri yansıtan basit veri türlerine sahiptir: tamsayılar, dizi dizileri ve listeler.
Veri tekrarını önlemek için veri modeli normalleştirilmiştir. Normalleştirme, tablolar arasında ilişkiler oluşturur. İlişkiler, farklı tablolardan gelen verileri birbirine bağlar.
Alanlar arasındaki ve bir alan içindeki ilişkiler açıkça tanımlanmamıştır.

Katılım yok

Anahtar/değer depoları kayıt odaklıdır. Bu, belirli bir kayıtla ilgili tüm bilgilerin onunla birlikte depolandığı anlamına gelir. Bir alan adı (bir tablo olarak düşünebilirsiniz) sayısız farklı kayıt içerebilir. Örneğin, bir alan, müşteriler ve siparişler hakkında bilgi içerebilir. Bu, verilerin genellikle farklı alanlar arasında çoğaltıldığı anlamına gelir. Disk alanı ucuz olduğu için bu kabul edilebilir bir yaklaşımdır. Ana şey, farklı tablolardan verileri birleştirmeye gerek olmadığından, ilgili tüm verilerin tek bir yerde depolanmasına izin vermesidir, bu da ölçeklenebilirliği artırır. İlişkisel bir veritabanı kullanırken, gerekli bilgileri tek bir yerde gruplamak için birleşimleri kullanmanız gerekir.


Anahtar/değer çiftlerini depolamak için bir ilişki ihtiyacı önemli ölçüde düşse de, ilişkilere hala ihtiyaç vardır. Bu tür ilişkiler genellikle ana varlıklar arasında bulunur. Örneğin, bir sipariş sistemi, müşteriler, ürünler ve siparişler hakkında verileri içeren kayıtlara sahip olacaktır. Bu verilerin bir alanda mı yoksa birkaç alanda mı olduğu önemli değil. Sonuç olarak, bir müşteri sipariş verdiğinde, muhtemelen müşteri ve sipariş bilgilerini tek bir kayıtta tutmak istemezsiniz.
Bunun yerine sipariş kaydı, ilgili müşteri ve ürün kayıtlarına işaret eden anahtarları içermelidir. Kayıtlar herhangi bir bilgiyi depolayabildiğinden ve ilişkiler veri modelinin kendisinde tanımlanmadığından, veritabanı yönetim sistemi ilişkilerin bütünlüğünü kontrol edemeyecektir. Bu, sipariş ettikleri müşterileri ve ürünleri silebileceğiniz anlamına gelir. Veri bütünlüğünün sağlanması tamamen uygulamanın sorumluluğundadır.

Veri erişimi

İlişkisel veritabanı Anahtar/değer depolama
Veriler, Structured Query Language (SQL) kullanılarak oluşturulur, güncellenir, silinir ve sorgulanır.
API yöntemi çağrıları kullanılarak veriler oluşturulur, güncellenir, silinir ve sorgulanır.
SQL sorguları, birleşimleri kullanarak hem tek bir tablodan hem de birden çok tablodan veri alabilir.
Bazı uygulamalar, filtre koşullarını belirtmek için SQL benzeri sözdizimi sağlar.
SQL sorguları, toplamalar ve karmaşık filtreler içerebilir.
Çoğu zaman, yalnızca temel karşılaştırma operatörlerini kullanabilirsiniz (=,! =,<, >, <= и =>).
İlişkisel bir veritabanı genellikle tetikleyiciler, saklı yordamlar ve işlevler gibi gömülü mantığı içerir.
Uygulama kodunda tüm iş ve veri bütünlüğü mantığı yer almaktadır.

Uygulamalarla etkileşim

Anahtar/değer depoları: avantajlar

İlişkisel depolamaya göre bu tür sistemlerin iki belirgin avantajı vardır.
Bulut hizmetleri için uygun
Anahtar/değer depolarının ilk avantajı, daha basit olmaları ve dolayısıyla ilişkisel veritabanlarından daha ölçeklenebilir olmalarıdır. Kendi sisteminizi birlikte barındırıyorsanız ve veri deponuzun arkasındaki artan yükle başa çıkması gereken bir düzine veya yüz sunucuyu barındırmayı planlıyorsanız, o zaman anahtar/değer depoları seçiminizdir.

Kolayca ve dinamik olarak genişletilebildiklerinden, çok kiracılı bir web depolama platformu sağlayan satıcılar için de yararlıdırlar. Böyle bir veritabanı, ölçeklenebilirlik için büyük potansiyele sahip nispeten ucuz bir depolama ortamını temsil eder. Kullanıcılar genellikle yalnızca kullandıkları kadar öder, ancak ihtiyaçları artabilir. Satıcı, yüke bağlı olarak platformun boyutunu kısıtlama olmaksızın dinamik ve pratik bir şekilde artırabilecektir.

Daha doğal kod entegrasyonu
İlişkisel veri modeli ve kod nesnesi modeli genellikle farklı şekilde oluşturulur ve bu da bazı uyumsuzluklara yol açar. Geliştiriciler bu sorunu, ilişkisel modeli nesne modeline eşleyen kod yazarak çözerler. Bu işlemin net ve hızlı bir şekilde elde edilebilir bir değeri yoktur ve uygulamanın kendisini geliştirmeye harcanabilecek oldukça fazla zaman alabilir. Bu arada, birçok anahtar/değer deposu, verileri nesnelerle daha doğal bir şekilde eşleyen bir yapıda depolar. Bu, geliştirme süresini önemli ölçüde azaltabilir.

"İlişkisel veritabanları sakarlaşabilir" (bu arada, bunun ne anlama geldiği hakkında hiçbir fikrim yok) gibi anahtar/değer depolarını kullanmaya yönelik diğer argümanlar daha az ikna edicidir. Ancak bu tür depoların savunucusu olmadan önce bir sonraki bölüme göz atın.

Anahtar/değer depoları: dezavantajlar

İlişkisel veritabanlarındaki kısıtlamalar, en düşük seviyede veri bütünlüğünü sağlar. Fiziksel olarak kısıtlamaları karşılamayan veriler veritabanına giremez. Anahtar/değer depolarında böyle bir kısıtlama yoktur, bu nedenle veri bütünlüğü kontrolü tamamen uygulamalara aittir. Ancak, herhangi bir kodda hatalar vardır. İyi tasarlanmış bir ilişkisel veritabanındaki hatalar genellikle veri bütünlüğü sorunlarına yol açmazken, anahtar/değer depolarındaki hatalar genellikle bu tür sorunlara yol açar.

İlişkisel veritabanlarının bir başka avantajı da sizi bir veri modeli geliştirme sürecine zorlamalarıdır. İyi bir model tasarımınız varsa, veritabanı, depolanan verilerin yapısını tam olarak yansıtan, ancak uygulamanın yapısıyla çelişen mantıksal bir yapı içerecektir. Böylece veriler uygulamadan bağımsız hale gelir. Bu, başka bir uygulamanın aynı verileri kullanabileceği ve temel modelde herhangi bir değişiklik yapılmadan uygulama mantığının değiştirilebileceği anlamına gelir. Aynı şeyi anahtar/değer depolama ile yapmak için, ilişkisel model tasarım sürecini, doğal veri yapısına dayalı genel sınıflar oluşturan sınıf tasarımıyla değiştirmeyi düşünün.

Ve uyumluluk hakkında unutma. İlişkisel veritabanlarından farklı olarak, bulut tabanlı depolamanın çok daha az ortak standardı vardır. Kavramsal olarak farklı olmasalar da hepsinin farklı API'leri, istek arayüzleri ve kendi özellikleri vardır. Bu nedenle, satıcınıza güvenmeniz daha iyi olur, çünkü bir şey olursa başka bir servis sağlayıcıya kolayca geçemezsiniz. Ve neredeyse tüm modern anahtar/değer depolarının beta 2'de olduğu gerçeği göz önüne alındığında, güvenmek ilişkisel veritabanlarına göre daha da riskli hale geliyor.

Sınırlı veri analizi
Tipik olarak, tüm bulut depolama, çoklu kiralama türü üzerine kuruludur; bu, çok sayıda kullanıcının ve uygulamanın aynı sistemi kullandığı anlamına gelir. Genel sistemin "kaçırılmasını" önlemek için, satıcılar genellikle bir şekilde sorgu yürütmesini kısıtlar. Örneğin, SimpleDB'de bir sorgu 5 saniyeden uzun süremez. Google AppEngine Datastore, istek başına 1000'den fazla kayıt alamaz 3.

Bu kısıtlamalar basit mantık (az sayıda kayıt oluşturma, güncelleme, silme ve alma) için korkutucu değildir. Peki ya uygulamanız popüler hale gelirse? Çok sayıda yeni kullanıcınız ve çok sayıda yeni veriniz var ve şimdi kullanıcılar için yeni deneyimler yaratmak veya verilerden bir şekilde yararlanmak istiyorsunuz. Verileri analiz etmek için basit sorgularla bile kontrolden çıkabileceğiniz yer burasıdır. Uygulama kullanım kalıplarını izleme veya kullanıcı geçmişine dayalı bir öneri sistemi gibi özellikler en iyi ihtimalle yanıltıcı olabilir. Ve en kötüsü, onlar basitçe imkansız.

Bu durumda, analitik için, anahtar/değer depolamanızdan verilerle doldurulacak ayrı bir veritabanı yapmak daha iyidir. Bunun nasıl yapılabileceğini önceden düşünün. Sunucuyu bulutta mı yoksa kendi başınıza mı barındıracaksınız? Sağlayıcınızla aranızda sinyal gecikmelerinden dolayı herhangi bir sorun olacak mı? Depolama alanınız bu veri aktarımını destekliyor mu? 100 milyon kaydınız varsa ve bir seferde 1000 kayıt alabiliyorsanız, tüm verileri aktarmak ne kadar sürer?

Ancak, ölçeklenebilirliğe öncelik vermeyin. Kullanıcılarınız başka bir hizmetin hizmetlerini kullanmaya karar verirse işe yaramaz çünkü bu hizmet daha fazla seçenek ve ayar sağlar.

Bulut depolama

Birçok web hizmeti sağlayıcısı, çok kiracılı anahtar/değer depoları sunar. Çoğu, yukarıda sıralanan kriterleri karşılamaktadır, ancak her birinin kendine özgü özellikleri vardır ve yukarıda açıklanan standartlardan farklıdır. SimpleDB, Google AppEngine Datastore ve SQL Data Services gibi belirli örnek depolara bir göz atalım.
Amazon: SimpleDB
SimpleDB, Amazon WebServices'e dahil olan, anahtar/değer öznitelik odaklı bir mağazadır. SimpleDB beta aşamasındadır; kullanıcılar, ihtiyaçları belirli bir limiti aşmadığı sürece ücretsiz olarak kullanabilirler.

SimpleDB'nin çeşitli sınırlamaları vardır. İlk olarak, sorgu yürütme süresi 5 saniye ile sınırlıdır. İkincisi, dizelerden başka veri türü yoktur. Her şey bir dize olarak saklanır, alınır ve karşılaştırılır, bu nedenle tarihleri ​​​​karşılaştırmak için onları ISO8601 formatına dönüştürmeniz gerekir. Üçüncüsü, herhangi bir dizenin maksimum boyutu 1024 bayttır ve bu, bir öznitelik olarak saklayabileceğiniz metnin (örneğin, ürün açıklaması) boyutunu sınırlar. Ancak, veri yapısı esnek olduğundan, "Ürün Açıklaması1", "Ürün Açıklaması2" vb. niteliklerini ekleyerek bu sınırlamayı çözebilirsiniz. Ancak öznitelik sayısı da sınırlıdır - maksimum 256 öznitelik. SimpleDB beta sürümündeyken, alan boyutu 10 gigabayt ile sınırlıdır ve tüm veritabanı 1 terabayttan büyük olamaz.

SimpleDB'nin temel özelliklerinden biri, nihai bir tutarlılık modeli kullanmasıdır. Bu model çok iş parçacıklı çalışma için uygundur, ancak bir kayıttaki bir özniteliğin değerini değiştirdikten sonra sonraki okumaların bu değişiklikleri göremeyebileceğini unutmayın. Böyle bir olay gelişme olasılığı oldukça düşüktür, ancak unutulmamalıdır. Satış anında verileriniz tutarsız olduğu için son bileti beş müşteriye satmak istemezsiniz.

Google AppEngine Veri Deposu
Google'ın AppEngine Datastore'u, Google'ın dahili yapılandırılmış veri depolama sistemi olan BigTable'ın üzerine kurulmuştur.AppEngine Datastore, BigTable'a doğrudan erişim sağlamaz, ancak BigTable ile etkileşim kurmak için basitleştirilmiş bir arayüz olarak düşünülebilir.

AppEngine Datastore, SimpleDB'den daha fazla veri türünü bir kayıt içinde destekler. Örneğin, bir kayıt içinde koleksiyonlar içerebilen listeler.

Bu, Google AppEngine ile geliştirme yaparken büyük olasılıkla kullanacağınız veri deposudur. Ancak SimpleDB'den farklı olarak AppEngine Datastore'u (veya BigTable'ı) Google Web Hizmetleri dışında kullanamazsınız.

Microsoft: SQL Veri Hizmetleri

SQL Veri Hizmetleri, Microsoft Azure platformunun bir parçasıdır. SQL Data Services, beta sürümünde ücretsizdir ve veritabanı boyutu sınırlarına sahiptir. SQL Veri Hizmetleri ayrı bir uygulamadır - veri depolayan birçok SQL sunucusu üzerinde bir eklentidir. Bu mağazalar ilişkisel olabilir, ancak sizin için SDS, tıpkı yukarıda açıklanan ürünler gibi bir anahtar-değer deposudur.

Bulut dışı depolama

Ayrıca, bulut dışında kendi başınıza kurarak kullanabileceğiniz bir dizi depo vardır. Bu projelerin neredeyse tamamı genç, alfa veya beta aşamasında ve açık kaynak. Açık kaynak ile, tescilli ürünlere kıyasla potansiyel sorunların ve sınırlamaların daha fazla farkında olabilirsiniz.
KanepeDB
CouchDB, ücretsiz ve açık kaynaklı bir belge odaklı veritabanıdır. Veri depolama formatı olarak JSON kullanılır. CouchDB, "görünümler" kullanarak belge ve ilişkisel veritabanları arasındaki boşluğu doldurmayı amaçlar. Bu tür görünümler, belgelerdeki verileri tabloya benzer bir biçimde içerir ve dizinler oluşturmanıza ve sorguları çalıştırmanıza olanak tanır.

CouchDB şu anda gerçekten dağıtılmış bir veritabanı değil. Verileri sunucular arasında senkronize tutmak için çoğaltma özelliklerine sahiptir, ancak bu, yüksek düzeyde ölçeklenebilir bir ortam oluşturmak için gereken dağıtım türü değildir. Ancak, CouchDB geliştiricileri bunun üzerinde çalışıyor.
Voldemort projesi
Voldemort projesi, çok sayıda sunucuya ölçeklendirilmek üzere tasarlanmış bir anahtar-değer dağıtılmış veritabanıdır. LinkedIn'in geliştirilmesi sırasında doğdu ve yüksek ölçeklenebilirlik gereksinimleri olan çeşitli sistemler için kullanıldı. Voldemort projesi ayrıca son bir tutarlılık modeli kullanır.
Moğol

Mongo, 10gen'de Geir Magnusson ve Dwight Merriman (DoubleClick'ten tanıyor olabilirsiniz) tarafından geliştirilen bir veritabanıdır. CouchDB gibi, Mongo da verileri JSON biçiminde depolayan belge odaklı bir veritabanıdır. Ancak Mongo, saf bir anahtar/değer deposundan çok bir nesne tabanıdır.
çiseleyen yağmur

Drizzle, anahtar-değer mağazalarının başa çıkmak için tasarlandığı sorunları çözmek için çok farklı bir yaklaşım sunuyor. Drizzle, MySQL 6.0'ın bir dalı olarak başladı. Daha sonra geliştiriciler, daha basit ve daha hızlı bir VTYS oluşturmak için bir dizi işlevi (görünümler, tetikleyiciler, derlenmiş ifadeler, saklı yordamlar, sorgu önbelleği, ACL'ler ve bazı veri türleri dahil) kaldırdı. Ancak, Drizzle yine de ilişkisel verileri depolamak için kullanılabilir. Geliştiricilerin amacı, 16 veya daha fazla çekirdekli sistemlerde çalışan web ve bulut uygulamaları için tasarlanmış yarı ilişkisel bir platform oluşturmaktır.

Çözüm

Sonuç olarak, uygulamanız için ilişkisel olmayan anahtar/değer depolamayı seçmeniz için dört neden vardır:
  1. Verileriniz son derece belge odaklıdır ve ilişkisel bir veri modelinden ziyade bir anahtar-değer veri modeline daha uygundur.
  2. Etki alanı modeliniz oldukça nesne yönelimlidir, bu nedenle anahtar/değer depolamayı kullanmak, verileri dönüştürmek için ihtiyaç duyduğunuz fazladan kod miktarını azaltacaktır.
  3. Veri ambarı ucuzdur ve satıcınızın web hizmetleriyle entegrasyonu kolaydır.
  4. Ana endişeniz, talep üzerine yüksek ölçeklenebilirliktir.
Ancak kararınızı verirken, belirli veritabanlarının sınırlamalarının ve ilişkisel olmayan veritabanlarını kullanmayı seçerseniz karşılaşacağınız risklerin farkında olun.

Diğer tüm gereksinimler için eski güzel ilişkisel VTYS'yi seçmek daha iyidir. Yani mahkumlar mı? Tabii ki değil. En azından şimdilik.

1 - Bence "veri yapısı" terimi burada daha uygundur, ancak orijinal veri modelini bırakmıştır.
2 - büyük olasılıkla, yazar, yetenekleri açısından, ilişkisel olmayan veritabanlarının ilişkisel olanlardan daha düşük olduğu anlamına geliyordu.
3 - veriler zaten güncel olmayabilir, makale Şubat 2009 tarihli.

  • voldemort
  • çiseleyen yağmur
  • Etiket ekle

    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çilmiş 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.

    II. ağ modeli

    III. ilişkisel model

    kayıtalan

    hiyerarşik ve ağ modelleri Yabancı anahtarlar


    4. İlişkisel veri modeli

    İlişkisel veritabanı

    * Davranış

    * Bağlanmak sütunlar (alanlar) tablolar.

    * Veri tipi

    * Bağlantı anahtar.

    * Birlik

    Ana fonksiyonlar RDBMS'ler şunlardır:

    · Veri tanımı

    · Veri işleme

    · Veri yönetimi

    Microsoft Erişimi

    Access'te veritabanı penceresi



    Nesnelerle çalışma modları

    Veritabanı nesneleriyle çalışma düğmeleri, veritabanı penceresinin Araç Çubuğunda bulunur:

    Açık- tablo düzenleme, sorgu yürütme, form yükleme, rapor oluşturma, makro çalıştırma moduna geçmenizi sağlar.

    yapıcı- seçilen nesnenin ayar moduna geçişi sağlar.

    Oluşturmak- seçilen türde yeni bir nesne oluşturmaya başlamanıza olanak tanır.

    7. Tablolarla çalışma

    Bir tablo oluşturmak için tablolar listesine gitmeniz ve düğmesine tıklamanız gerekir. Oluşturmak ... Yeni bir iletişim kutusu görünecek Yeni tablo:

    Access'te birkaç yolla tablo oluşturabilirsiniz:

    · Kullanarak "sıfırdan" yeni bir tablo oluşturun yapıcı;

    · Çalıştırmak Tablo Sihirbazı- Access'te bulunan standart çözümlere dayalı olarak adım adım modda bir tablo oluşturmayı teklif eden özel bir program;

    · FoxPro veya Excel gibi herhangi bir programın dosyasından bir veritabanı tablosu içe aktarın.

    Alan adını ayarlama

    Alan adı sütunda belirlenir Alan adı... Ad en fazla 64 karakter uzunluğunda olabilir ve nokta, ünlem işareti ve açılı ayraçlar dışındaki tüm karakterlere izin verilir. Yinelenen alan adlarına izin verilmez.

    Veri türü tanımı

    Her alan için içerdiği veri türünü belirtmelisiniz. Veri türü, sütuna tıklanarak çağrılabilen bir listeden seçilir. Veri tipi... Access, aşağıdaki veri türlerinde çalışır:

    Ø Metin- maksimum 255 karakterlik düz metni saklamak için.

    Ø NOT alanı- 65.535 karaktere kadar büyük miktarda metin depolamak için.

    Ø Sayısal- gerçek sayıları saklamak için.

    Ø Tarih Saat- takvim tarihlerini ve geçerli saati saklamak için.

    Ø parasal- bu alanlar parasal tutarları içerir.

    Ø Tezgah- bir tablo için benzersiz bir sistem anahtarı tanımlamak için. Tipik olarak kayıtların sıralı numaralandırılması için kullanılır. Tabloya yeni kayıt eklendiğinde bu alanın değeri 1 (bir) artırılır. Bu tür alanlardaki değerler güncellenmez.

    Ø Boolean - verileri depolamak, değerleri almak için: Evet veya Hayır.

    Ø OLE Nesne Alanı- diğer uygulamalarda oluşturulan nesneleri depolamak için.

    Alan özelliklerinin açıklaması

    Daha önce belirtildiği gibi, bireysel alanların özellikleri alan özellikleri alanında tanımlanır (sekme Genel). Her alanın, alanın türüne bağlı olarak belirli bir özellikleri vardır. Birkaç alan türü, benzer alan özellikleri kümelerine sahiptir. Alanların ana özellikleri aşağıda listelenmiştir.

    Ø Alan boyutu- metin alanının maksimum uzunluğu (varsayılan olarak 50 karakter) veya sayısal alanın veri türü. Daha küçük veriler daha hızlı işlendiğinden, bu özelliği izin verilen minimum değere ayarlamanızı öneririz.

    Veri türü sayısal ise aşağıdaki özellik değerleri geçerlidir. Alan boyutu:

    Yorum Yap... Bir alanı daha küçük bir boyuta dönüştürürseniz veri kaybı meydana gelebilir.

    Ø alan formatı- verileri ekranda görüntüleme veya yazdırma biçimi. Tipik olarak, varsayılan biçim kullanılır.

    Ø Ondalık- sayısal ve para birimi veri türleri için ondalık noktadan sonraki ondalık basamak sayısını ayarlar.

    Ø Giriş maskesi- alana verilerin girildiği formu tanımlar (veri girişi otomasyon aracı).

    Ø İmza- alanı bir tabloda, formda veya raporda görüntülemek için kullanılacak alanın tanımı. Bu değer belirtilmez ise alan adı imza olarak alınacaktır.

    Ø Varsayılan değer- yeni bir veri kaydı oluşturulduğunda alana otomatik olarak girilen standart bir değer.

    Ø Değer koşulu- girilen değerlere kısıtlamalar koyar, böylece veri girişinin doğruluğu üzerinde kontrol sağlar.

    Ø Hata mesajı- Değer üzerindeki koşulun ihlali durumunda ekranda görüntülenen mesajın metnini ayarlar.

    Ø gerekli alan- bu alanın Null değerler (yani boş kalabilir) içerip içermediğini veya bu alana veri girilmesi gerekip gerekmediğini belirler.

    Ø Dizine eklenmiş alan- kayıtları bu alanda saklanan değere göre aramak ve sıralamak için ve ayrıca mükerrer kayıtları otomatik olarak ortadan kaldırmak için kullanılır. tür alanları HAFIZA, Ole nesnesi ve köprü indekslenemez.

    Bir anahtar alan tanımlama

    Tüm alanların özelliklerini belirledikten sonra en az bir anahtar alan seçmelisiniz. Kural olarak, yinelenmeyen veriye sahip alanlar veya veri tipine sahip alanlar, anahtar alanlar olarak oluşturulur. Tezgah ... Her durumda, anahtar alanı yinelenen veriler içermemelidir. Bir anahtar tanımlamak için gerekli alanı (veya alanları) seçin ve düğmesine basın. Anahtar alan Düzenlemek ... İşaretçinin solunda bir anahtar görüntü belirecektir.

    tablo kaydetme

    Bilgi girmeden önce yansıtılan tablo kaydedilmelidir: düğmesine basın Kaydetmek araç çubuğunda veya ilgili komutta p.m. Dosya ve tablonun adını girin, ardından ekranda "Anahtar alanı oluştur?" sorusu belirir. (Evet veya Hayır)

    Cevap ise " Evet", Sonra Access otomatik olarak "Kod" adında bir alan ve veri türü oluşturacaktır. Tezgah , Eğer " Numara", - daha sonra tablo anahtar alanı olmadan oluşturulacaktır. Bu durumda, oluşturulan tabloyu modda açmanız gerekir. yapıcı ve anahtar alanını "manuel" olarak tanımlayın.

    Veri girişi

    Tabloyu bilgi giriş moduna geçirmek için moduna geçmeniz gerekir. tablolar... Alanlar sırayla doldurulur. düğmesine basarak bir alandan diğerine geçmek uygundur. Sekme(veya bir kombinasyon Üst Karakter + Sekme- ters yönde). Tablo, bazı alanlar için varsayılan değerlerle tasarlanmışsa, bu değerler ilgili alanlarda otomatik olarak görünecektir. Tablodaki kayıtlar, elektronik tablolarda olduğu gibi taşınabilir, kopyalanabilir ve silinebilir, yani önce satırları seçin ve ardından gerekli işlemi yapın. Başlığa tıklanarak bir sütun seçilebilir. Yöntem kullanılarak sütunlar sola ve sağa hareket ettirilebilir sürükle ve bırak(sürükle ve bırak).

    Gerekirse, moda dönebilirsiniz yapıcı... Bu, tablonun yapısındaki bir şeyi düzeltmeyi mümkün kılar.

    Tablodaki verileri sıralama

    Tablodaki veriler artan veya azalan düzende sıralanabilir. Bunu yapmak için, fare imlecini, değerleri öğeden sıralanacak olan sütunun herhangi bir hücresine yerleştirmeniz gerekir. Kayıtlar takım seç sıralama veya paneldeki ilgili düğmeye basın.

    8. Veritabanı tabloları arasında bağlantılar oluşturma

    Tablolar arasındaki ilişki, bir tabloda tanımlanarak kurulur ( ast) başka bir tablonun anahtarına karşılık gelen alanın ( ana). Kurulan bağlantı verilen alanda aynı değerleri içeren kayıtları birbirine bağlayacaktır. Oluşturduğunuz bağlantılar daha sonra Access tarafından sorgularda, formlarda veya raporlarda kullanılır.

    Uyarılar.

    Ø Her iki bağlantılı alan da aynı veri tipi.

    Ø Özellikler Alan boyutu her iki bağlantılı alan için sayısal tür aynı olmalıdır.

    Ø Ana tablonun anahtar alanı veri tipine sahip bir alan ise Tezgah, o zaman bu alan bir alt tablodaki sayısal bir alanla ilişkilendirilebilir. Bu durumda, özellik için ilgili tablonun sayısal alanı için Alan boyutu olarak ayarlanmalıdır Uzun tamsayı .

    Veri bütünlüğü

    Veri bütünlüğüİlgili tablolardaki kayıtlar arasında doğru ilişkileri koruyan ve verileri yanlışlıkla yapılan değişikliklerden veya silinmelerden koruyan bir kurallar dizisidir.

    Bu kurallar şunları içerir:

    Ø Alt tabloya, ana tablonun kaydı ile ilgili olmayan kayıtlar giremezsiniz.

    Ø Ana tabloda, alt tabloda onunla ilişkili kayıtlar varsa, bir anahtar alanın değerini değiştiremezsiniz.

    Ø Alt tabloda ilişkili kayıtlar varsa, ana tablodaki kayıtlar silinemez.

    basamaklı işlemler

    Bağlantılı tablolardaki veri bütünlüğü, iki tür basamaklı işlemle sağlanır:

    Ø basamaklı güncelleme işlemleri;

    Ø basamaklı silme işlemleri.

    Bu işlemler, ilgili onay kutuları seçilerek açılabilir ve kapatılabilir: "Bağlantılı alanların kademeli olarak güncellenmesi" ve "Bağlantılı alanların kademeli olarak silinmesi".

    "İlgili alanların basamaklı güncellemesi" onay kutusu seçilirse, 1: M ilişkisinde "bir" tarafta bulunan ana tablodaki anahtar alanının değerindeki herhangi bir değişiklik, ilgili değerleri otomatik olarak güncelleyecektir ​ilgili tüm kayıtlarda.

    Ana tablodan bir kaydı silerken Bağlı tabloları kademeli olarak sil onay kutusunu seçtiğinizde, bağlı tablolardaki bağlantılı kayıtların otomatik olarak silinmesi sağlanır.

    Bağlantıları kaldırma (değiştirme)

    Ø Pencereyi aç veri şeması;

    Ø silinecek (değiştirilecek) bağlantıyı farenin sol tuşu ile etkinleştirin;

    Ø İçeriğe duyarlı menüyü getirmek için sağ tıklayın ve komutu seçin Silmek (Değiştirmek) sırasıyla.

    9. Tablolar arasındaki ilişki türleri

    Tablolar arasında üç tür ilişki vardır:

    Bire bir (1: 1). Ana tablodaki her bir kayıttaki anahtar değer, alt tablodaki yalnızca bir kayıtta ilişkili alandaki değerlere karşılık gelebilir. Bu durumda tablolar arasındaki ilişki ancak her iki tablonun anahtar alanları üzerinden kurulabilir.

    Birden çoğa (1: M). Ana tablodaki her bir kayıttaki anahtar değer, alt tablodaki birkaç kayıtta ilişkili alan(lar)daki değerlere karşılık gelebilir. Bu tür ilişki, ilişkisel veritabanlarında oldukça sık kullanılır.

    Çoktan çoğa (M: M). Birinci tablo A'dan (çıkış bağlantısı) bir kayıt, başka bir tablo B'nin (alma) birden fazla kaydıyla ilişkilendirilebildiğinde, iki tablo arasında oluşur, sırayla, başka bir tablodan bir kayıt, tablonun birden fazla kaydıyla ilişkilendirilebilir. ilk tablo... Bu şema, yalnızca bağlantı anahtarı en az iki alandan oluşan üçüncü bağlantı tablosunun yardımıyla gerçekleştirilir. Bu alanlar, A ve B tablolarındaki yabancı anahtar alanlarıdır. Birleştirme tablosunun birincil anahtarı, genellikle yabancı anahtarların bir birleşimidir.

    Tablolar arasında M: M tipi bağlantılar varsa, M: M ilişkisinin 1: M tipi iki bağlantıya indirgeneceği ek bir kesişim tablosu oluşturulur. Access, iki tablo arasında doğrudan bir M: M ilişkisi tanımlamanıza izin vermez.

    10. Taleplerin oluşumu

    Bir istek çalıştırma

    Bir pencereden yürütme isteği başlatmak için yapıcı araç çubuğu düğmesine tıklamanız gerekiyor " Koşma» ! veya komutu yürütün Talep Et / Çalıştır... Talep üzerine veri örnekleme sonuçları, tablo modunda ekranda görüntülenir.

    Seçim koşullarının oluşumu

    İfadeler belirtilirken kullanılan operatörlerin listesi aşağıdaki gibidir:

    Ø operatörler karşılaştırmalar:


    = (eşittir)

    <> (eşit değil)

    > (daha fazla)

    >= (Az değil)

    < (daha küçük)

    <= (daha fazla değil)


    ARASINDA- bir dizi değer ayarlamanıza olanak tanır. Sözdizimi: Arasında"İfade" Ve"İfade" (örneğin: ARASINDA 10 Ve 20, boole ifadesi ile aynı anlama gelir >= 10 VE<= 20).

    İÇİNDE- karşılaştırma için kullanılan değerlerin bir listesini belirlemenizi sağlar (işlenen, parantez içine alınmış bir listedir). Örneğin: İÇİNDE("Brest", "Minsk", "Grodno"), "Brest" mantıksal ifadesi ile aynı anlama gelir. VEYA"Minsk" VEYA"Grodno".

    Ø zeka oyunu operatörler:

    VE(örneğin:> = 10 VE<=20)

    VEYA(Örneğin:<50 OR >100)

    OLUMSUZ(örneğin: Is Not Null, bazı değerler içeren bir alandır).

    Ø operatör SEVMEK- uygunluğu kontrol eder Metin veya Not alanları belirli bir karakter deseni ile.

    Şablon Sembol Tablosu

    Operatörü kullanma örnekleri Beğenmek:

    "Ç*" GİBİ- C karakteriyle başlayan satırlar;

    "[A - Z] #" GİBİ- A'dan Z'ye herhangi bir karakter ve bir rakam;

    GİBİ "[! 0 - 9 ABC] * # #"- sayılar veya A, B, C harfleri dışında herhangi bir karakterle başlayan ve 2 basamakla biten satırlar;

    Karmaşık örnekleme kriterleri

    Bir tablonun birkaç alanı için belirtilen bir koşula veya bir alan için birkaç koşula göre kayıtları seçmek genellikle gereklidir. Bu durumda başvurun "Ben-sorgular"(yalnızca tüm koşullar karşılandığında kayıtları seçin) ve VEYA sorgular(koşullardan en az biri karşılandığında kayıtların seçimi).

    ayarlarken " VEYA sorgu»Her seçim koşulu ayrı bir satıra yerleştirilmelidir İstek formu.

    ayarlarken " I-sorgu»Her seçim koşulu bir satıra, ancak farklı alanlara yerleştirilmelidir. İstek formu.

    Bu işlemler operatörler kullanılarak açıkça belirtilebilir. VEYA ve VE sırasıyla.

    Iif() ve Format() Fonksiyonları

    İşlev IIf (koşul; ifTrue; ifFalse)- ifadeyi değerlendirmenin sonucuna bağlı olarak iki bağımsız değişkenden birini döndürür.

    İşlev Biçim (ifade; biçim bildirimi)- biçimlendirme yönergelerine göre biçimlendirilmiş bir ifade içeren bir dize döndürür.

    ifadeler için tarih / saat bir biçimlendirme ifadesinde aşağıdaki karakterleri kullanabilirsiniz:

    I. Hiyerarşik model

    II. ağ modeli

    III. ilişkisel model

    İlişkisel modelde bilgiler dikdörtgen tablolar şeklinde sunulur. Her tablo satır ve sütunlardan oluşur ve veritabanında benzersiz bir adı vardır. Sırayla, her satır ( kayıt) böyle bir tablonun yalnızca belirli bir nesneyle ilgili bilgileri içerir ve her sütun ( alan) tablosunun, tablosuna özgü bir adı vardır.

    İlişkisel veritabanları (RDB'ler), aksine hiyerarşik ve ağ modelleri, tablolar arasındaki ilişkileri istediğiniz zaman düzenlemenizi sağlar. Bunun için RDB bir mekanizma uygulamıştır. Yabancı anahtarlar... Her veritabanı tablosu, başka bir tabloya bağlantı görevi gören en az bir alana sahiptir. RDB terminolojisinde bu tür alanlara yabancı anahtar alanlar denir. Yabancı anahtarları kullanarak, veritabanıyla çalışmanın herhangi bir aşamasında herhangi bir veritabanı tablosunu bağlayabilirsiniz.


    4. İlişkisel veri modeli

    İlişkisel veritabanı (RDB), belirli bir konu alanını yansıtan bir dizi alan ve kayıttan oluşan, mantıksal olarak birbirine bağlı en basit iki boyutlu tablolar-ilişkiler topluluğudur.

    İlişkisel veri modeli, ünlü bir Amerikan veritabanı uzmanı olan E. Codd tarafından önerildi. Bu modelin temel kavramları ilk olarak 1970 yılında yayınlandı. Eğitim alan bir matematikçi olarak Codd, veri işleme için küme teorisi aygıtını (birleşim, kesişim, fark, Kartezyen çarpımı) kullanmayı önerdi. Verilerin herhangi bir temsilinin, matematikte ilişki (İngilizce - ilişki, dolayısıyla ad - ilişkisel veritabanları) olarak bilinen özel türdeki iki boyutlu tabloların bir koleksiyonuna indirgendiğini gösterdi.

    Codd'un ana fikirlerinden biri, veriler arasındaki ilişkinin, iç mantıksal ilişkilerine göre kurulması gerektiğiydi. Codd tarafından önerilen ikinci önemli ilke, ilişkisel sistemlerde bir komutun tüm veri dosyalarını işleyebilmesi, daha önce tek bir komutla yalnızca bir kaydın işlenmesidir.

    İlişkisel veritabanlarının (RDB'ler) temel kavramları

    * Davranış- aynı türdeki nesneler hakkında, örneğin müşteriler, siparişler, çalışanlar hakkında bilgiler. İlişkisel bir veritabanında, bir ilişki tablo olarak saklanır.

    * Bağlanmak- belirli bir nesne hakkında belirli bir bilgi - örneğin, bir müşterinin adresi veya bir çalışanın maaşı. Nitelik genellikle şu şekilde saklanır: sütunlar (alanlar) tablolar.

    * Veri tipi- ilişkisel modelde algoritmik dillerdeki karşılık gelen konsepte tamamen eşdeğer olan bir kavram. Desteklenen veri türleri kümesi DBMS tarafından belirlenir ve sistemden sisteme büyük ölçüde değişebilir.

    * Bağlantı- bir tablodaki bilgilerin başka bir tablodaki bilgilerle ilişkilendirilme şekli. Bağlantılar, adı verilen eşleşen alanlar kullanılarak yapılır. anahtar.

    * Birlik- belirli özniteliklerin eşleşen değerlerine dayalı olarak tabloları veya sorguları birleştirme işlemi.

    İlişkisel bir veritabanı oluşturmak için kurallar (normalleştirme)

    normalleştirme tabloları, verilerin tutarlı ve doğru düzenlenmesine izin veren bir forma getirmek için tekrarlayan grupları ve diğer çelişkileri ortadan kaldırarak verilerin yeniden düzenlenmesi sürecidir. Normalleştirmenin nihai amacı, her bir olgunun yalnızca bir yerde göründüğü bir veritabanı tasarımı elde etmektir, yani. bilgi fazlalığı hariçtir.

    1. Herhangi bir tablonun her alanı benzersiz olmalıdır.

    2. Her tablonun benzersiz bir tanımlayıcısı olmalıdır ( birincil anahtar), bir veya daha fazla tablo alanından oluşabilir.

    3. Birincil anahtarın her değeri için, veri sütunlarından herhangi birinin yalnızca bir değeri olmalıdır ve bu değer tablo nesnesiyle ilgili olmalıdır (yani tablo, nesneye ait olmayan verileri içermemelidir). birincil anahtar tarafından tanımlanır, ancak tablodaki bilgiler de nesneyi tam olarak tanımlamalıdır).

    4. Herhangi bir alanın (birincil anahtara dahil edilmeyen) değerlerini değiştirmek mümkün olmalıdır ve bu, başka bir alanın değiştirilmesini gerektirmemelidir (yani hesaplanmış alanlar olmamalıdır).

    5. Veritabanı yönetim sistemleri (DBMS)

    Bir bilgisayar ortamındaki veritabanlarının bakımı, yazılım araçları - makine ortamında veri tabanları oluşturmak, güncel tutmak ve düzenlemek için gerekli genel veya özel amaçlar için bir dizi yazılım ve dil aracı olan veri tabanı yönetim sistemleri tarafından gerçekleştirilir. kabul edilen veri işleme teknolojisi koşullarında farklı kullanıcılara erişme.

    VTYS - bunlar, veritabanlarıyla tüm manipülasyonları sağlayan kontrol programlarıdır: bir veritabanı oluşturmak, sürdürmek, birçok kullanıcı tarafından kullanmak vb., yani, merkezi veritabanı yönetimi için karmaşık bir dizi işlev uygular ve kullanıcıların çıkarlarına hizmet ederler.

    Bir DBMS, veritabanı ile kullanıcı arasında oturan bir yazılım kabuğu olarak düşünülebilir. Veri koruma ve bütünlüğünün merkezi kontrolünü, verilere erişim, bunların işlenmesi, bir veritabanı bazında raporlama ve diğer işlemler ve prosedürler sağlar.

    İlişkisel Veritabanı Yönetim Sistemi (RDBMS)

    RDB'leri yönetmek için bir takım araçlara denir. ilişkisel veritabanı yönetim sistemi yardımcı programları, uygulamaları, hizmetleri, kitaplıkları, uygulama oluşturma araçlarını ve diğer bileşenleri içerebilir. Ortak anahtar alanlar aracılığıyla bağlantılı olarak, RDB'deki bilgiler birçok tablodan tek bir sonuç kümesinde birleştirilebilir.

    Ana fonksiyonlar RDBMS'ler şunlardır:

    · Veri tanımı- hangi bilgilerin saklanacağını, veritabanının yapısını ve türlerini ayarlayın.

    · Veri işleme- herhangi bir alanı seçebilir, verileri sıralayabilir ve filtreleyebilirsiniz. Verileri birleştirebilir ve özetleyebilirsiniz.

    · Veri yönetimi- düzeltin ve veri ekleyin.

    6. DBMS ACCESS'in genel özellikleri

    Microsoft Erişimi Verileri tanımlamak ve işlemek için gerekli tüm araçları sağlamanın yanı sıra büyük miktarda bilgi ile çalışırken bunları yönetmek için işlevsel olarak eksiksiz bir ilişkisel VTYS'dir. Çeşitli sürümleri MS Office yazılım paketine dahildir ve Windows ortamında (3.11 / 95/98/2000 / XP) çalışır.

    Access'te veritabanı penceresi

    Yeni bir veritabanı dosyası oluşturduktan veya çalışma alanında mevcut bir Access penceresini açtıktan sonra, veritabanı penceresi görünür:


    Bir veri modeli, işlenmesi için bir veri yapıları ve işlemleri topluluğudur. Veri modelini kullanarak nesnelerin yapısını ve aralarında kurulan ilişkileri görselleştirebilirsiniz. Veri modellerinin terminolojisi, "veri öğesi" ve "bağlayıcı kurallar" kavramlarıyla karakterize edilir. Bir veri öğesi, herhangi bir veri kümesini tanımlar ve bağlama kuralları, veri öğelerinin ilişkisine yönelik algoritmaları belirler. Bugüne kadar birçok farklı veri modeli geliştirilmiştir, ancak pratikte üç ana model kullanılmaktadır. Hiyerarşik, ağ ve ilişkisel veri modellerini tahsis edin. Buna göre hiyerarşik, ağ ve ilişkisel VTYS'den bahsederler.

    О Hiyerarşik veri modeli. Hiyerarşik olarak organize edilmiş veriler günlük yaşamda çok yaygındır. Örneğin bir yükseköğretim kurumunun yapısı çok düzeyli hiyerarşik bir yapıdır. Hiyerarşik (ağaç benzeri) bir veritabanı, sıralı bir dizi öğeden oluşur. Bu modelde, orijinal öğeler diğer öğeleri doğurur ve bu öğeler sırayla sonraki öğeleri doğurur. Her çocuğun sadece bir ebeveyni vardır.

    Organizasyon şemaları, malzeme listeleri, kitaplardaki içindekiler, proje planları ve diğer birçok veri koleksiyonu hiyerarşik bir şekilde sunulabilir. Atalar ve torunlar arasındaki bağlantıların bütünlüğü otomatik olarak korunur. Temel kural: Hiçbir soyundan gelen, ebeveyni olmadan var olamaz.

    Bu modelin en büyük dezavantajı, tasarım sırasında veritabanının temelinde oluşturulan hiyerarşiyi kullanma ihtiyacıdır. Sürekli veri yeniden düzenleme ihtiyacı (ve genellikle bu yeniden düzenlemenin imkansızlığı), daha genel bir model - ağ yaratılmasına yol açtı.

    О Ağ veri modeli. Verileri organize etmeye yönelik ağ tabanlı yaklaşım, hiyerarşik yaklaşımın bir uzantısıdır. Bu model, oluşturulan her öğenin birden fazla ana öğeye sahip olabilmesi bakımından hiyerarşik olandan farklıdır. ■

    Bir ağ veritabanı, ilgili organizasyonun verilerinde bulunan tüm ilişki türlerini doğrudan temsil edebildiğinden, bu veriler her türlü yolla gezilebilir, araştırılabilir ve sorgulanabilir, yani ağ modeli yalnızca bir hiyerarşi ile bağlı değildir. Ancak, ağ bağlantılı bir veritabanına sorgu oluşturmak için, yapısını derinlemesine araştırmak (elde bu veritabanının bir diyagramına sahip olmak) ve bu veritabanının önemli bir dezavantajı olan veritabanında gezinmek için bir mekanizma geliştirmek gerekir. modeli.

    İlişkisel veri modeli hakkında. İlişkisel bir veri modelinin arkasındaki temel fikir, herhangi bir veri kümesini iki boyutlu bir tablo olarak temsil etmektir. En basit durumunda, ilişkisel bir model tek bir iki boyutlu tabloyu tanımlar, ancak çoğu zaman bu model birkaç farklı tablo arasındaki yapıyı ve ilişkileri tanımlar.

    ilişkisel veri modeli

    Bu nedenle, bilgi sisteminin amacı işlem yapmaktır. veri hakkında nesneler dikkate alındığında gerçek dünya bağlantılar nesneler arasında. DB teorisinde, veriler genellikle şu şekilde adlandırılır: nitelikler ve nesneler - varlıklar. Nesne, nitelik ve bağlantı, I.S.'nin temel kavramlarıdır.

    Bir obje(veya varlık) var olan bir şeydir ve fark edilebilir, yani, bir nesne, bir adı ve benzer bir nesneyi diğerinden ayırt etmenin bir yolu olan "bir şey" olarak adlandırılabilir. Örneğin, her okul bir nesnedir. Nesneler aynı zamanda bir kişi, okulda bir sınıf, bir firma, bir alaşım, bir kimyasal bileşik vb. olabilir. Nesneler sadece maddi nesneler değil, aynı zamanda gerçek dünyayı yansıtan daha soyut kavramlar da olabilir. Örneğin olaylar, bölgeler, sanat eserleri; kitaplar (basılı ürün olarak değil, eser olarak), tiyatro gösterileri, filmler; hukuk normları, felsefi teoriler vb.

    Bağlanmak(veya verilen)- bu, belirli bir nesneyi karakterize eden ve nesnenin belirli bir örneği için belirli bir sayısal, metinsel veya başka bir değer alan bir göstergedir. Bilgi sistemi, belirli bir konu alanıyla ilgili olarak tasarlanmış nesne kümeleriyle, belirli bir dizi kullanarak çalışır. nitelik değerleri(veri) belirli nesnelerin. Örneğin, bir okuldaki dersleri nesneler topluluğu olarak ele alalım. Bir sınıftaki öğrenci sayısı, sayısal bir değer alan bir veridir (bir sınıfta 28, diğerinde 32 vardır). Sınıfın adı, metinsel bir anlam kazanan belirli bir addır (birinde 10A, diğerinde 9B, vb.).

    İlişkisel veritabanlarının gelişimi 1960'ların sonlarında, ilk makalelerin tartışıldığı; veritabanlarının tasarımında veri sunmanın olağan ve doğal yollarını kullanma olasılığı - sözde tablosal veri modelleri.

    İlişkisel veritabanları teorisinin kurucusu, IBM'in bir çalışanı olarak kabul edilir, Dr. E. Codd, 6 (Haziran 1970 makalesi) Büyük Paylaşımlı Veri Bankaları İçin İlişkisel Bir Veri Modeli(Büyük toplu veri bankaları için ilişkisel bir veri modeli). Bu makale, "ilişkisel veri modeli" terimini ilk kullanan makaledir. 70'lerde Amerika Birleşik Devletleri'nde Dr. E. Codd tarafından geliştirilen ilişkisel veritabanları teorisi, verileri verimli bir şekilde düzenlemek için kuralları tanımlayan güçlü bir matematiksel temele sahiptir. E. Codd tarafından geliştirilen teorik temel, veritabanı tasarımı teorisinin geliştirilmesinin temeli oldu.

    E. Codd, eğitim yoluyla bir matematikçi olarak, veri işleme için küme teorisi aparatının (birleşim, kesişim, fark, Kartezyen çarpım) kullanılmasını önerdi. Herhangi bir veri kümesinin, matematikte "ilişkiler" olarak bilinen özel türden iki boyutlu tablolar olarak temsil edilebileceğini kanıtladı.

    ilişkisel tüm verilerin kullanıcıya veri değerlerinin dikdörtgen tabloları şeklinde sunulduğu ve veritabanındaki tüm işlemlerin tabloları manipüle etmeye indirgendiği böyle bir veritabanı düşünülür.

    tablo oluşur sütunlar (alanlar) ve çizgiler (kayıtlar); veritabanı içinde benzersiz bir ada sahiptir. tablo yansıtır Nesne türü gerçek dünya (öz), ve her biri string belirli bir nesnedir. Tablodaki her sütun, bir nesnenin belirli bir özelliği için bir değerler topluluğudur. Değerler, olarak adlandırılan nesne özniteliğinin tüm olası değerleri kümesinden seçilir. ihtisas.

    En genel haliyle, bir etki alanı, etki alanının öğelerinin ait olduğu bazı temel veri türleri ve veri öğelerine uygulanan keyfi bir mantıksal ifade belirtilerek tanımlanır. Bir veri öğesi üzerinde mantıksal bir koşul değerlendirilirken sonuç "doğru" ise, bu öğe etki alanına aittir. En basit durumda, bir alan, aynı türden geçerli bir potansiyel değer kümesi olarak tanımlanır. Örneğin, tüm çalışanların doğum tarihlerinin toplanması “doğum tarihi alanı”nı, tüm çalışanların adları ise “çalışan adı alanı”nı oluşturmaktadır. Doğum tarihi alanı, zaman içindeki noktalar hakkında bilgi depolamak için bir veri türüne sahiptir ve çalışan adı alanı, bir karakter veri türü olmalıdır.

    Aynı etki alanından iki değer geliyorsa, iki değeri karşılaştırabilirsiniz. Örneğin, doğum tarihi etki alanından iki değer varsa, hangi çalışanın daha yaşlı olduğunu belirlemek için bunları karşılaştırabilirsiniz. Değerler farklı alanlardan alınırsa, karşılaştırmalarına izin verilmez, çünkü büyük olasılıkla mantıklı değildir. Örneğin, bir çalışanın adı ile doğum tarihini karşılaştırmaktan kesin bir şey çıkmaz.

    Her sütunun (alan), genellikle tablonun en üstüne yazılan bir adı vardır. Belirli bir VTYS içinde tablolar tasarlarken, her alan için kendi bir çeşit, yani, onu görüntülemek için bir dizi kural tanımlayın ve bu alanda depolanan veriler üzerinde gerçekleştirilebilecek işlemleri tanımlayın. Tür kümeleri, farklı VTYS'ler için farklılık gösterebilir.

    Alan adı tabloda benzersiz olmalıdır, ancak farklı tablolarda aynı ada sahip alanlar olabilir. Herhangi bir tablonun en az bir alanı olmalıdır; alanlar, tablonun oluşturulduğu sırada adlarının sırasına göre düzenlenir. Alanların aksine, dizelerin adları yoktur; tablodaki sıraları tanımlanmamıştır ve sayı mantıksal olarak sınırlandırılmamıştır.

    Tablodaki satırlar sıralı olmadığı için konumuna göre bir satır seçmek mümkün değildir - aralarında “birinci”, “ikinci”, “son” yoktur. Herhangi bir tablonun, değerleri her bir satırını benzersiz bir şekilde tanımlayan bir veya daha fazla sütunu vardır. Böyle bir sütuna (veya sütunların birleşimine) denir. birincil anahtar... Bir tablodaki sayı kayıtlarına genellikle yapay bir alan eklenir. Örneğin, böyle bir alan, tablodaki her kaydın benzersizliğini sağlayabilen sıra olabilir. Anahtar aşağıdaki özelliklere sahip olmalıdır.

    benzersizlik Herhangi bir zamanda, ilişkinin hiçbir iki farklı demeti, anahtara dahil edilen niteliklerin kombinasyonu için aynı değere sahip değildir. Yani tabloda aynı kimlik numarasına veya pasaport numarasına sahip iki satır olamaz.

    Minimalite. Anahtarın içerdiği özelliklerin hiçbiri, benzersizliği ihlal etmeden anahtardan hariç tutulamaz. Bu, hem pasaport numarasını hem de kimlik numarasını içeren bir anahtar oluşturmaya gerek olmadığı anlamına gelir. Tuple'ı benzersiz bir şekilde tanımlamak için bu niteliklerden herhangi birinin kullanılması yeterlidir. Ayrıca anahtara benzersiz olmayan bir öznitelik eklememelisiniz, yani bir kimlik numarası ve bir çalışanın adının bir kombinasyonunu anahtar olarak kullanmak yasaktır. Çalışan adını anahtardan hariç tutarak, her satırı benzersiz bir şekilde tanımlayabilirsiniz.

    Her ilişkinin en az bir olası anahtarı vardır, çünkü tüm niteliklerinin toplamı benzersizlik koşulunu karşılar - bu, ilişkinin tanımından kaynaklanır.

    Olası tuşlardan biri rastgele seçilir. birincil anahtar olarak. Varsa kalan olası anahtarlar şu şekilde alınır: alternatif anahtarlar.Örneğin, birincil anahtar olarak bir kimlik numarası seçerseniz, pasaport numarası alternatif anahtar olacaktır.

    Tabloların ilişkisi, ilişkisel veri modelinin temel bir unsurudur. o destekleniyor Yabancı anahtarlar.

    İlişkisel bir veritabanı modeli tanımlanırken, açıklama düzeyine (teori veya uygulama) ve sisteme (Access, SQL Server, dBase) bağlı olarak genellikle aynı kavram için farklı terimler kullanılır. Tablo 2.3 Kullanılan terimleri özetler.

    Tablo 2.3. Veritabanı terminolojisi

    Veritabanı Teorisi ____________ İlişkisel Veritabanları __________ SQL Server __________

    İlişki Tablosu Tablosu

    Tuple Kayıt Satırı

    Özellik Alanı _______________ Sütun

    İlişkisel veritabanları

    İlişkisel veritabanı veritabanında saklanması gereken tüm bilgileri içeren ilişkiler kümesidir. Diğer bir deyişle, veritabanı, tüm verileri depolamak için gereken tablo kümesini temsil eder. İlişkisel veritabanı tabloları mantıksal olarak birbirleriyle ilişkilidir.İlişkisel bir veritabanı için tasarım gereksinimleri birkaç kuralda özetlenebilir.

    О Her tablonun veritabanında benzersiz bir adı vardır ve aynı türdeki satırlardan oluşur.

    О Her tablo sabit sayıda sütun ve değerden oluşur. Bir satırın bir sütununda birden fazla değer saklanamaz. Örneğin yazar, yayın tarihi, tiraj vb. bilgileri içeren bir tablo varsa yazarın adının bulunduğu sütun birden fazla soyadı içeremez. Kitap iki veya daha fazla yazar tarafından yazılmışsa, ek tablolar kullanmanız gerekecektir.

    О Hiçbir zaman tabloda birbirini kopyalayan iki satır olmayacaktır. Tablodaki herhangi bir satırı benzersiz bir şekilde tanımlayabilmek için satırlar en az bir değerde farklılık göstermelidir.

    О Her sütuna tablo içinde benzersiz bir ad atanır; bunun için belirli bir veri türü belirlenir, böylece homojen değerler (tarihler, soyadlar, telefon numaraları, para miktarları vb.) bu sütuna yerleştirilir.

    О Veritabanının eksiksiz bilgi içeriği, verilerin kendisinin açık değerleri şeklinde sunulur ve bu sunum yöntemi tektir. Örneğin, tablolar arasındaki ilişki, ilişkiyi yapay olarak tanımlayan herhangi bir işaretçi temelinde değil, karşılık gelen sütunlarda depolanan verilere dayanır.

    О Verileri işlerken, tablonun herhangi bir satırına veya sütununa serbestçe başvurabilirsiniz. Tabloda saklanan değerler, verilere erişim sırasına herhangi bir kısıtlama getirmez. Kolon AÇIKLAMASI,