İşlevsel veritabanı bağımlılığı. Fonksiyonel bağımlılık

  • 29.07.2019

Nitelikler arasındaki bağımlılıklar

    A'nın her bir değeri için B'nin yalnızca bir değeri varsa, B özelliği işlevsel olarak A özelliğine bağımlıdır.

Tanım: A B

2. A B ve B A biçiminde işlevsel bir bağımlılık varsa, o zaman A ile B arasında birbirine bağlı bir yazışma veya işlevsel bir karşılıklı bağımlılık vardır.

Tanım: A B

Kısmi fonksiyonel bağımlılık anahtar olmayan bir özelliğin bileşik anahtarın bir kısmına bağımlılığıdır.

Tam işlevsel bağımlılık

Anahtar olmayan bir öznitelik tamamen bileşik bir anahtara bağımlı olduğunda.

Vesaire: Departman (tam ad, zorunluluk, maaş, hizmet süresi, deneyim süresi, bölüm, konu, grup, meslek türü)

Tam adı departmanı

Tam ad konumu

A, B, C nitelikleri için A B ve B C koşulu karşılanıyorsa, C niteliği A'ya geçişli olarak bağlıdır, ancak A C ters bağımlılığı yoktur

Örnek. Tam adı pozisyon maaşı

R ilişkisinde, A'nın her değeri, r'deki diğer niteliklerle ilişkili olmayan bir B değerleri kümesine karşılık geliyorsa, B özelliği çoklu değerli olarak A özelliğine bağlıdır.

Tanım A B, A B, A B Tam ad konusu

Not: Genel olarak, bir ilişkinin iki niteliği arasında işlevsel ve çok değerli bağımlılıklar (1:1, 1:M,M:M) mevcut olabilir, çünkü Nitelikler arasındaki bağımlılık anormalliklere neden oluyorsa, o zaman nitelik bağımlılıklarıyla olan ilişkiyi çeşitli ilişkilere bölmek gerekir. Sonuç, aralarındaki bağlantıların çeşitli ilişkilerin nitelikleri arasındaki bağımlılıkları yansıtan ilgili ilişkilerin bir koleksiyonudur.

Bu niteliklerden herhangi biri işlevsel olarak diğer niteliklere bağlı değilse, iki veya daha fazla niteliğin karşılıklı olarak bağımsız olduğu söylenir (A Notasyonu)
İÇİNDE).

Nitelikler arasındaki bağımlılıkları belirleme

Nitelikler arasındaki bağımlılıkların belirlenmesi, normal formlar yöntemini kullanarak veritabanı tasarımı gerçekleştirmek için gereklidir.

Fonksiyonel bağımlılığı belirlemenin ana yolu dikkatli analizdir nitelik semantiği.

A1 A3

Ayrıca A2 ¬ A1, A3 ¬ A1

r ilişkisindeki tüm mevcut fonksiyonel bağımlılıkları listeleyerek, F+ ile gösterilen tam bir fonksiyonel bağımlılıklar seti elde ederiz.

Bazı fonksiyonel bağımlılıkları bilerek, çıkarım aksiyomlarını kullanarak herhangi bir ilişki için tam F + kümesi elde edilebilir.

“Departman” ilişkisi için:

Tam adı maaş

Tam ad konumu

Tam ad deneyimi

Tam adı departmanı

Tam adı d_experience

Deneyim d_experience

Pozisyon maaşı

Maaş pozisyonu

Ad Soyad.Öğretmen.Grup Sınıf türü

İlişkilerin normalleşmesi

İlişkisel bir veritabanında her ilişkinin normalleştirilmesi gerekir. Normal form, veri eklerken, silerken ve değiştirirken anormalliklerden kaçınmanıza olanak tanıyan, veritabanı şemasındaki bir kısıtlamadır.

Her haritadaki herhangi bir özelliğin her değeri bölünemez (atomik) bir öğe ise, bir ilişki normalleştirilmiş (1NF) olarak kabul edilir. Bu tür atomik değerler basit veri türleridir.

2NF Esas olarak üç normal form kullanılır.

Tüm normal formlar için iç içe geçme kuralına uyulur

Normalleştirmenin Faydaları:

    Kullanıcıların ve veritabanı yöneticilerinin işini kolaylaştıran daha iyi veritabanı organizasyonu.

    Bilgi fazlalığı azalır, bu da yapının basitleştirilmesine ve disk alanının rasyonel kullanımına yol açar.

    Tekrarlanan bilgiler en aza indirilir.

    Veritabanını daha küçük tablolara bölerek normalleştirme, veri yapılarını değiştirirken daha fazla esneklik sağlar.

    Daha fazla veritabanı güvenliği.

Veritabanını normalleştirdikten sonra, içerdiği bilgilerin korunmasını organize etmek önemli ölçüde basitleştirilmiştir.

Kusurlar :

Veritabanında sorgular yürütülürken performansta azalma.

Tanımlar:

    İlgili alanların tüm öğeleri, orijinal ilişkideki her bir özellik için atomik ise, bir ilişki 1NF'dedir. Orijinal ilişki 1NF'de olacak şekilde inşa edilmiştir.

    Uygulama tarafından parça parça kullanılıyorsa değer atomik değildir.

Bir ilişkinin bir sonraki normal forma dönüştürülmesi, kayıpsız ayrıştırma yöntemi kullanılarak gerçekleştirilir.

Bu ayrıştırma, orijinal ilişkiye ve ayrıştırma sonucunda elde edilen ilişkilere yapılan sorguların aynı sonucu vermesini sağlamalıdır.

Yöntemdeki ana işlem projeksiyon işlemidir.

r (A,B,C,D,E) C D

r1(A,B,C,E) r2(C,D) πCD(r)

Anahtar olmayan niteliklerin kısmi anahtar bağımlılığı aşağıdakilerle sonuçlanır:

    1. Verilerin bariz ve bariz olmayan bir şekilde çoğaltılması vardır; örneğin, çeşitli gruplarda ve/veya farklı konularda dersler veren bir öğretmenin deneyiminin, pozisyonunun ve maaşının tekrarlanması. Aynı pozisyon için maaş verilerinin tekrarı veya hizmet süresine ilişkin ikramiye verileri.

    Aşırı çoğaltmanın sonucu veri düzenleme sorunudur. 2NF'ye geçiş sırasında fazlalığın bir kısmı ortadan kaldırılır.

Aşağıdaki durumlarda bir ilişki 2NF'dedir:

    İlişki 1NF'dedir.

    Anahtar olmayan her öznitelik işlevsel olarak tamamen birincil anahtara bağımlıdır.

Kısmi bağımlılığı ortadan kaldırmak ve ilişkiyi 2NF'ye aktarmak için şunları yapmalısınız:

    Kısmen işlevsel olarak birincil anahtara bağımlı olan öznitelikler olmadan bir projeksiyon oluşturun.

    Bileşik birincil anahtarın parçalarına ve bu parçalara bağlı olan özniteliğe bir projeksiyon oluşturun.

Sonuç olarak, 2NF'de bulunan iki r1,r2 ilişkisini elde ederiz:

Meslek türü

Ivanov I.M.

Pratik

Ivanov I.M.

Pratik

Petrov M.I.

Petrov M.I.

Pratik

Sidorov N.G.

Sidorov N.G.

Egorov V.V.

2NF'ye geçiş, r2'ye ilişkin bariz veri fazlalığını ortadan kaldırır, ancak verilerin kopyalanması kalır ve bu nedenle r2'nin 3NF'ye dönüştürülmesi gerekir.

Def.1: Aşağıdaki durumlarda bir ilişki 3NF'dedir:

    Tüm 2NF gereklilikleri karşılanmıştır.

    Anahtar olmayan her öznitelik birincil anahtara geçişli olarak bağımlı değilse.

Tanım.2: Anahtar olmayan tüm nitelikler birbirinden bağımsız ve tamamen birincil anahtara bağımlıysa, bu ilişki 3NF'dedir.

Tam ad maaş pozisyonu

Tam ad deneyimi D_experience

Tam adı pozisyon maaşı

Geçişli bağımlılıklar ayrıca gereksiz veri üretimine de neden olur.

Geçişli bağımlılıkları çözmek için bu geçişli bağımlılıklara neden olan niteliklere yönelik bir projeksiyon kullanmanız gerekir.

Sonuç olarak şunu elde ederiz:

D_deneyimi

Uygulamada çoğu durumda 3NF'ye indirgemek yeterlidir ve daha fazla normalleştirme yapılmaz.

Bir ilişkide bileşik anahtarın niteliklerinin anahtar olmayan niteliklere bağımlılığı varsa, güçlendirilmiş 3NF'ye geçmek gerekir, buna BCNF denir.

Def. Bir ilişki 3NF'deyse ve anahtar olmayan niteliklerde anahtar bağımlılıklar (bileşik anahtar nitelikler) yoksa BNFB'dedir.

Kavramsal bir diyagramı ilişkisel bir model olarak temsil ederken, ilişki şemalarını seçmek için çeşitli seçenekler mümkündür. Bazı seçim seçenekleri önceki bölümlerde (bölüm 6.2.3) ele alınmıştı, diğerleri ise bazı ilişki şemalarının birleştirilmesi (veya bölünmesi) yoluyla elde edilmiştir. Kavramsal şemayı temsil eden ilişki diyagramlarının doğru seçimi, veri tabanının etkinliğini büyük ölçüde belirleyecektir.

Örnek olarak belirli bir ilişki şemasını ele alalım ve onun eksikliklerini analiz edelim. Öğrenci, fakülte, uzmanlık alanlarına ilişkin verilerin şu ilişki şemasıyla bir tabloda yer aldığını varsayalım: ÖĞRENCİ (Öğrenci Kodu, Soyadı, Fakülte Adı, Uzmanlık Adı).

Bu ilişki şeması ilgili veritabanının aşağıdaki dezavantajlarına neden olur:

  • Bilgilerin çoğaltılması (artıklık). Aynı bölümde öğrenim gören öğrenciler için bölümün adı tekrarlanacaktır. Uzmanlıklar farklı fakülteler için tekrarlanacak.
  • Potansiyel tutarsızlık ( anormallikleri güncelle). Örneğin, bir uzmanlığın adı değişirse, onu bir demet içinde (bir öğrenci için) değiştirerek, bulunduğu diğer tüm demetlerde de değiştirmek gerekir.
  • Potansiyel bilgi kaybı ( silme anormallikleri). Belirli bir uzmanlığa giren tüm öğrencilerin bilgilerini sildiğimizde bu uzmanlığa ilişkin tüm bilgileri kaybederiz.
  • Bilginin veritabanına dahil edilmeme potansiyeli ( anahtarlama anormallikleri). Veritabanında, eğer o alanda eğitim gören öğrenci yoksa, bir uzmanlık alanıyla ilgili bilgi bulunmayacaktır.

İÇİNDE ilişkisel veritabanı teorileri Artıklığın olmadığı ilişkisel bir veritabanı modeli oluşturmak için resmi yöntemler vardır ve anormallikleri güncelle, kaldırma ve dahil etme.

Normalleştirme. Birincil normal form.

İlişki şemalarının rasyonel bir versiyonunun oluşturulması (verilerin dahil edilmesi, değiştirilmesi ve silinmesi işlemleri için diğer tüm şema kümelerinden daha iyi özelliklere sahip olan) sözde kullanılarak gerçekleştirilir. normalleştirme ilişki kalıpları. Normalleştirme birkaç aşamada gerçekleştirilir. İlk aşamada ilişki diyagramı ilk sırada olmalıdır. normal biçim(1NF).

İlişki ilk aşamada normal biçim, bir ilişkinin tüm nitelikleri, daha temel bileşenlerden oluşan bir küme veya grup olmayan basit değerleri (atomik veya bölünemez) alıyorsa.

Aşağıdaki örneği düşünün.

Tablo MUAYENE RAPORU varlığını temsil eder

Öğrenci kodu Soyadı Sınav kodu Konu ve tarih Seviye
1 Sergeyev 1 Matematik 5.06.08 4
2 İvanov 1 Matematik 5.06.08 5
1 Sergeyev 2 Fizik 9.06.08 5
2 İvanov 2 Fizik 9.06.08 5

Artık herhangi bir satırın ve herhangi bir sütunun kesişiminde bir değer vardır ve bu nedenle bu tablo ilk sırada yer alır. normal biçim.

Daha sonra, ilkinde sunulan ilişki normal biçim sırasıyla ikinci ve üçüncüye dönüştürülür. normal formlar. İkinci ve üçüncü normal formların oluşturulması süreci aşağıdaki alt bölümlerde anlatılacaktır. Verilere ilişkin bazı varsayımlar altında, üçüncü normal biçim istenen en iyi seçenektir.

Bu varsayımların karşılanmaması halinde normalizasyon süreci devam ederek oran dördüncü ve beşinciye dönüştürülür. normal formlar. İlgili formların yapısı literatürde anlatılmıştır ve bu kitapta tartışılmamıştır.

İkinciyi inşa etmeye geçmeden önce normal şekil Bir takım resmi kavramları tanımlamak gerekir.

8.2. İşlevsel bağımlılıklar (bir ilişkinin nitelikleri arasındaki bağımlılıklar)

R(A 1, A 2, ..., An n) bir ilişki şeması olsun ve X ve Y alt kümeler (A 1, A 2, ..., A n) olsun.

Fonksiyonel bağımlılık tutum hakkında R "Eğer iki demet varsa" şeklinde bir ifadedir R kümenin niteliklerini eşleştir(yani bu demetler, X kümesinin her bir özelliği için karşılık gelen bileşenlerinde aynı değerlere sahiptir. ), o zaman kümenin nitelikleriyle örtüşmeleri gerekir . Resmi olarak bu bağımlılık şu ifadeyle yazılır: X -> Y, ve öyle söyleniyor X işlevsel olarak tanımlar Y. Sıklıkla kullanılan bir diğer ifade ise şudur: X işlevsel olarak tanımlar e veya e işlevsel olarak bağlıdır X ( ile gösterilir X -> Y) ancak ve ancak kümenin her değeri X ilişki R kümenin bir değeriyle ilişkili e ilişki R. Başka bir deyişle, eğer iki demet R anlam bakımından örtüşmek X, anlam olarak aynılar Y.

Yorum. Genel olarak konuşursak, "ilişki" terimi iki kavram anlamına gelebilir:

  • farklı değerler alabilen bir değişken olarak ilişki (satırları ve sütunları farklı değerler içerebilen bir tablo);
  • belirli değerler kümesi olarak bir ilişki (dolu öğeler içeren bir tablo).

İşlevsel bağımlılıklar Prensip olarak R ilişki şemasının değerleri olabilecek tüm ilişkileri karakterize edin. Bu nedenle belirlemenin tek yolu işlevsel bağımlılıklar– Niteliklerin semantiğini (anlamını) dikkatlice analiz edin.

İşlevsel bağımlılıklarözellikle bütünlük kısıtlamalarıdır, bu nedenle veritabanı her güncellendiğinde bunların kontrol edilmesi önerilir.

İNCELEME RAPORU ilişkisi için fonksiyonel bağımlılık örneği

Öğrenci kodu -> Soyadı Öğrenci kodu, Sınav kodu -> Not

Bu dersin başında verilen STUDENT ilişkisi için fonksiyonel bağımlılıklara bir örnek

Öğrenci kodu -> Soyadı, Öğrenci kodu -> Fakülte

Son bağımlılığın, bir öğrencinin birden fazla fakültede öğrenim görememesi durumunda ortaya çıktığını unutmayın.

Tam işlevsel bağımlılıklar seti

Her ilişki için, bu ilişkinin nitelikleri arasında iyi tanımlanmış bir dizi işlevsel bağımlılık vardır. Ayrıca, söz konusu ilişkinin doğasında bulunan bir veya daha fazla işlevsel bağımlılıktan başka bağımlılıklar da türetilebilir. işlevsel bağımlılıklar, aynı zamanda bu ilişkinin doğasında var.

Bir ilişki için belirli bir dizi işlevsel bağımlılık R hadi belirtelim F mantıksal olarak elde edilebilecek eksiksiz bir işlevsel bağımlılıklar kümesi F kapanış denir F ve belirlenmiş F+.

Eğer fonksiyonel bağımlılıklar seti bu setin kapanışıyla çakışıyorsa, böyle bir fonksiyonel bağımlılıklar setine tam denir..

Tanıtılan kavramlar, anahtar kavramını resmi olarak tanımlamamıza olanak tanır.

Bir plan olsun R niteliklerle A 1 A 2 ...A n , F – bazı işlevsel bağımlılıklar ve X - bazı alt kümeler R. Daha sonra X öncelikle, anahtar denir F+ bir bağımlılık var X -> A 1 A 2 ...A n ve ikincisi, hiçbir alt küme için e dahil X, bağımlılık Y -> A 1 A 2 ...A n ait değil F+.

Tam işlevsel bağımlılık, anahtar olmayan bir özelliğin bileşik anahtarın tamamına bağımlılığıdır..

Kısmi işlevsel bağımlılık, anahtar olmayan bir özelliğin bileşik anahtarın bir kısmına bağımlılığıdır..

Hesaplamak birden fazla işlevsel bağımlılığı kapatma aşağıdakiler kullanılır çıkarım kuralları (

İşlevsel bağımlılıklar

Fonksiyonel bağımlılık, nitelikler arasındaki ilişkiyi tanımlar ve normalleştirmenin temel kavramlarından biridir. İlişkisel şemanın niteliklerinin (A, B, C,..., Z) olduğunu ve tüm tabanın tek bir evrensel ilişki R=(A, B, C,..., Z) olarak temsil edilebileceğini varsayalım. Bu nedenle veritabanındaki her özelliğin benzersiz bir adı vardır.

A ve B, bir R ilişkisinin nitelikleri ise ve A'nın her değeri B'nin bir ve yalnızca bir değeriyle ilişkiliyse (ve niteliklerin her biri bir veya daha fazla nitelikten oluşabilir), o zaman B niteliği işlevsel olarak bağımlı A özelliğinden (ВАА).

Her koşulda geçerli olan fonksiyonel bağımlılığa denir önemsiz. Önemsiz olmayan bağımlılıklar ilişkiler üzerindeki bütünlük kısıtlamalarını tanımlar.

Geçişli bağımlılık A, B ve C nitelikleri için bir ilişkinin anlamı şu anlama gelir: Eğer AàB ve BàC ise, o zaman C, A niteliğine B yoluyla geçişli olarak bağlıdır (A'nın işlevsel olarak B veya C'den bağımsız olması şartıyla).

Bütünlük kaybına yol açabilecek veri fazlalığından kaçınmak için, minimum düzeyde yeterli bağımlılık kümesinin kullanılması gerekir.

Normalleştirmeyi kullanan veritabanı tasarımı, anlamsal olarak açık olan işlevsel bağımlılıkların tanımlanmasıyla başlar; birinci normal forma indirgenmesi.

Birinci normal formdaki bir tablonun aşağıdaki gereksinimleri karşılaması gerekir:

1) tabloda mükerrer kayıtlar olmamalıdır;

2) tablo yinelenen alan grupları içermemelidir;

3) her alan anlamsal olarak bölünemez olmalıdır.

İkinci normal formdaki bir tablo, 1NF'nin tüm gereksinimlerini karşılamalıdır; anahtar olmayan herhangi bir alan, tam bir anahtar alanlar kümesi tarafından benzersiz bir şekilde tanımlanır; yani ilişkinin her özelliği, tamamen veya kısmen işlevsel olarak başka bir özelliğe bağımlıdır.

AàB'nin işlevsel bağımlılığı tam dolu A'dan herhangi bir özelliğin kaldırılması bu bağımlılığın kaybına yol açıyorsa fonksiyonel bağımlılık. AàB'nin fonksiyonel bağımlılığına denir kısmi, eğer A'da belirli bir nitelik varsa, kaldırıldığında bu bağımlılık kalır.

Üçüncü normal formdaki bir tablo, 2NF'nin tüm gereksinimlerini karşılamalıdır; anahtar olmayan hiçbir alan, başka bir anahtar olmayan alanla, yani birinci ve ikinci normal formda olan ve anahtar olmayan hiçbir özniteliğe sahip olmayan bir ilişkiyle tanımlanmamalıdır. niteliklerin birincil anahtarında, bu birincil anahtara geçişli işlevsel bir bağımlılık içinde olacaktır.

Boyce Code Normal Formu (BCNF), bir ilişkinin tüm potansiyel anahtarlarını dikkate alan, ancak daha katı kısıtlamalarla işlevsel bağımlılıklara dayanmaktadır.

Fonksiyonel bağımlılığın belirleyicisi başka bir özelliğin tamamen işlevsel olarak bağlı olduğu bir özelliktir (veya özellikler grubudur).

Bir ilişkinin BCNF'ye ait olup olmadığını kontrol etmek için tüm belirleyicilerini bulmak ve bunların potansiyel anahtarlar olduğundan emin olmak gerekir.

3NF ile BCNF arasındaki fark, B özelliğinin bir birincil anahtar olması ve A özelliğinin mutlaka bir aday anahtar olmaması durumunda, 3NF ilişkisinde AàB işlevsel bağımlılığına izin verilmesidir. BNF için bu bağımlılığa yalnızca A özelliğinin aday anahtar olması durumunda izin verilir. Bu nedenle, her BCNF ilişkisi 3NF olduğundan, ancak her 3NF ilişkisi BCNF olmadığından BCNF, 3NF'nin daha katı bir versiyonudur.

Bir ilişki yalnızca belirleyicilerinden her birinin potansiyel bir anahtar olması durumunda BCNF'dedir.

Dördüncü normal form (4NF), BCNF'de önemsiz olmayan çok değerli bağımlılıklar içermeyen bir ilişkidir.

Çok değerli bağımlılık A'nın her değeri B için bir değerler kümesini ve C için bir değerler kümesini temsil edecek şekilde bir ilişkinin nitelikleri (örneğin, A, B ve C) arasındaki ilişkiyi temsil eder. Bununla birlikte, değer kümeleri ​​çünkü B ve C birbirinden bağımsızdır.

Çok değerli bir bağımlılık ayrıca önemsiz veya önemsiz olmayan olarak tanımlanabilir. Bir R ilişkisinin çok değerli bağımlılığı AàB, eğer B özelliği A veya . özelliğinin bir alt kümesi ise önemsiz olarak tanımlanır. Tersine, çok değerli bir bağımlılık, her iki koşulun da karşılanmaması durumunda önemsiz olmayan olarak tanımlanır. Önemsiz çok değerli bir bağımlılık bu ilişki üzerinde herhangi bir kısıtlama getirmez, ancak önemsiz olmayan bir bağımlılık bunu yapar.

Bir ilişkiyi projeksiyon işlemi kullanarak bölümlendirirken kullanılan ayrıştırma yöntemi kesin olarak belirlenir. Ortaya çıkan ilişkiler yeniden kurulduğunda orijinal ilişkinin yeniden kurulabilmesi gerekir. Bu ayrışmaya denir kayıpsız bağlantı ayrıştırması(veya kazan-kazan veya eklemeli olmayan birleştirme) çünkü tüm verileri orijinal ilişkide korur ve ek boş satırların oluşturulmasını ortadan kaldırır.

Projektif bağlayıcı normal form olarak da adlandırılan beşinci normal form (5NF), bu formdaki bir ilişkinin birleştirme bağımlılığı olmadığı anlamına gelir. A,B,...,Z niteliklerinin bir alt kümesine sahip bir R ilişkisi, eğer R'nin kabul edilebilir her değeri, A,B,...,Z alt kümeleri üzerindeki izdüşümlerinin birleşimine eşitse, bir birleştirme bağımlılığını karşılar.

Birden fazla özelliğin tek bir ilişkide birleştirilmesi rastgele yapılmaz. Bu konuda saklanacak veriler birbirine bağlıdır. Bu ilişki, ilişkinin nitelikleri arasındaki bir dizi işlevsel bağımlılık tarafından belirlenir. Bu, bir özelliğin değerlerinin diğer özelliklerin değerlerine bağlı olduğu anlamına gelir; yani özellik değerlerinin herhangi bir kombinasyonuna izin verilmez. Bu bağımlılıklar konu alanının sınırlamalarından kaynaklanmaktadır. Örneğin, bununla ilgili olarak Tedarik aşağıdaki kısıtlamalar geçerlidir:

Her tedarikçinin yalnızca bir adresi vardır,

Her tedarikçi belirli bir fiyata mal tedarik eder,

· Farklı tedarikçiler tarafından sağlanan mallar farklı depolara dağıtılabilir, ancak bir tedarikçi tarafından sağlanan aynı isimli mallar yalnızca bir depoda depolanmalıdır,

· Her deponun kendine ait hacmi vardır.

Bu kısıtlamalar bağımlılıklardır ve aşağıdaki şekilde formüle edilebilirler:

· adresin işlevsel olarak tedarikçiye bağlı olması,

· fiyat işlevsel olarak ürüne ve tedarikçiye bağlıdır,

· Depo numarası işlevsel olarak ürüne ve tedarikçiye bağlıdır,

· hacim işlevsel olarak depo numarasına bağlıdır.

İşlevsel bağımlılık, bir nitelik kümesindeki bir demetin değerleri, başka bir nitelik kümesindeki (veya bir nitelik üzerindeki) bir demetin değerlerini benzersiz bir şekilde belirlediğinde ortaya çıkar.

Bırakın tutum R bir diyagramı var R, X Ve e– alt kümeler R. Davranış R tatmin eder fonksiyonel bağımlılık X→Y, Eğer π Y (σ X=x (r)) her değer için en fazla bir tanımlama grubu vardır xÎX yani X niteliklerinin değerleri, Y niteliklerinin değerlerini benzersiz bir şekilde belirler.

Fonksiyonel bağımlılığı şu şekilde göstereceğiz:

· Tedarikçi → Adres,

· (Ürün, Tedarikçi)→ Fiyat,

· (Ürün, Tedarikçi)→ Depo,

· Depo → Hacim.

Ve şöyle okuyorlar:

· Adresi Tedarikçi belirler,

· Fiyatı Ürün ve Tedarikçi belirler,

· Depoyu Ürün ve Tedarikçi belirler,

· Depo Hacmi belirler.

İşlevsel bağımlılık dilinde şemanın anahtarı R bir alt kümedir KİR, öyle ki kR ve uygun alt küme yok K¢ÍK bu özelliğe sahip değildir.

Normal formlar

Bir ilişkinin ayrıştırılmasının gerçekleştirilmesi gereken kuralları formüle edelim. Bu sürece normalizasyon, yani ilişkinin normal forma getirilmesi denir.

Normal formlar, ilişkisel şemayı yukarıda listelenen istenmeyen özelliklerden kurtaran kısıtlamaları temsil eder. İlişkileri normal forma indirmeden önce, etki alanında mevcut olan nitelikler arasındaki tüm işlevsel bağımlılıkları oluşturmalısınız.

İlişki diyagramı R içinde Birincil normal form (1NF) eğer tüm niteliklerin değerleri atomikse (bileşik değil), yani her bir niteliğin değeri ne bir liste ne de bir değerler kümesidir.

Örneğin, nitelik Ad Soyadüç veriden oluşan bileşiktir: soyadı, adı ve soyadı.

Bir şemayı 1NF'ye dönüştürmek için tüm bileşik nitelikleri basit olanlarla değiştirmeniz gerekir.

Veritabanında depolanan bilgi fazlalığından kurtulmak için ikinci ve üçüncü normal formlar vardır.

İlişki diyagramı R içinde ikinci normal form (2NF) birinci normal formdaysa ve birincil olmayan her öznitelik tamamen işlevsel olarak birincil anahtara bağımlıysa.

Eksik işlevsel anahtar bağımlılığı nedir? Anahtarda yer almayan herhangi bir niteliğin işlevsel olarak bağımlı olması durumunda böyle bir bağımlılık bir ilişkide mevcuttur. parçalar Anahtarın içerdiği özellikler. Birincil olmayan herhangi bir nitelik, işlevsel olarak ilişki anahtarı tarafından tanımlanan tüm birincil niteliklere zorunlu olarak bağımlıdır. Ve ayrıca, birincil olmayan herhangi bir nitelik, işlevsel olarak birincil niteliklerin hepsine değil, bir kısmına bağlıysa, o zaman bu, eksik bir işlevsel bağımlılıktır.

Örneğin, bununla ilgili olarak Tedarik birincil özellikler şunlardır Ürün Ve Sağlayıcı. Bağlanmak Fiyat işlevsel olarak tamamen anahtara ve özelliğe bağlıdır Adres anahtarın bir kısmına, yani yalnızca özelliğe bağlıdır Sağlayıcı, bu tamamlanmamış bir işlevsel bağımlılıktır. Yani şema Tedarik 2NF'de değil.

1NF'deki bir devreyi 2NF'ye dönüştürmek için onu birkaç devreye bölmeniz gerekir:

· diyagram projeksiyonu gerçekleştirin R işlevsel olarak anahtara tamamen bağımlı olan birincil niteliklere ve niteliklere ilişkindir; yani, anahtara tamamen bağımlı olmayan birincil olmayan nitelikleri hariç tutar,

· her tamamlanmamış işlevsel bağımlılık için bir diyagram projeksiyonu gerçekleştirin R bu bağımlılığa dahil olan niteliklere göre; yani ilişki anahtarının bir kısmını bırakın R ve işlevsel olarak bu parçaya bağımlı olan nitelikler.

İlişki örneğinde TedarikŞemanın 2NF'ye düşürülmesi sonucunda iki ilişki elde edilecektir:

Sarf malzemeleri_1(Ürün, Sağlayıcı, Fiyat, Depo, Hacim),

Sarf malzemeleri_2(Sağlayıcı, Adres).

Ancak depo hacmine ilişkin bilgiler yinelenmeye devam ediyor. Şemanın bu eksikliğini gidermek için üçüncü bir normal form bulunmaktadır.

İlişki diyagramı R içinde üçüncü normal form (3NF), eğer ikinci normal formdaysa ve anahtar üzerinde birincil olmayan niteliklerin geçişli bağımlılıkları yoksa.

Geçişli bağımlılıklar nelerdir? Geçişli bağımlılık, birincil olmayan bir özelliğin işlevsel olarak başka bir birincil olmayan özelliğe bağımlı olması ve bu özelliğin de işlevsel olarak bir anahtara bağımlı olması durumunda ortaya çıkar.

İlişki diyagramı Sarf malzemeleri_1(Ürün, Sağlayıcı, Fiyat, Depo, Hacim) geçişli bir bağımlılık içerdiğinden 3NF'de değil:

{Ürün, Tedarikçi} → Stoklamak, StoklamakHacim.

2NF'deki bir devreyi 3NF'ye dönüştürmek için yapmanız gerekenler:

· diyagram projeksiyonu gerçekleştirin R anahtardan geçişli olarak bağımsız olan birincil nitelikler ve nitelikler üzerinde, yani anahtara geçişli olarak bağımlı olan birincil olmayan niteliklerin hariç tutulması,

· her geçişli bağımlı birincil olmayan öznitelik için bir şema projeksiyonu gerçekleştirin R geçişli bağımlılığın ikinci bölümünde yer alan niteliklere, yani ilişkinin yalnızca birincil olmayan niteliklerini bırakın R arasında işlevsel bir bağımlılık vardır.

İlişki örneğinde Sarf malzemeleri_1 Devrenin 3NF'ye düşürülmesi sonucunda iki ilişki elde edilecektir:

Sarf malzemeleri_1_1(Ürün, Sağlayıcı, Fiyat, Depo),

Sarf malzemeleri_1_2(Stoklamak, Hacim).

Böylece, orijinal ilişki şemasını tartışılan kurallara göre sırayla birkaç başka şemaya bölerek, bölümün başında tartışıldığı gibi bilgilerin güncellenmesi ve kopyalanmasındaki anormalliklerden arınmış bir 3NF şeması elde ediyoruz.

Bir ilişki şemasını birkaç başka şemaya bölme işlemine ne ad verilir? ayrışma ilişki şemaları. Normal formlardan biriyle ilişkiyi azaltan bir ayrıştırmaya denir. normalleştirme.

Ele alınan örnekte, ayrıştırma sonucunda tek bir ilişki yerine Tedariküç yeni ilişkimiz oldu:

Sarf malzemeleri_1_1(Ürün, Sağlayıcı, Fiyat, Depo),

Sarf malzemeleri_1_2(Stoklamak, Hacim),

Sarf malzemeleri_2(Sağlayıcı, Adres).

Yabancı anahtarlarla birbirine bağlanan üç ilişkiden oluşan böyle bir şemayla, tedarikçinin adresi ve deponun hacmi hakkında hiçbir bilgi kopyalanmayacak; depo boşsa, tedarikçi ise hacmi veritabanında kalacaktır; mal tedarik etmiyorsa adresi yine de veritabanı verilerinde saklanacaktır.

Fark ettiğiniz gibi, 3NF şeması veritabanını bilgilerin tekrarından ve güncelleme anormalliklerinden kurtarır, ancak her zaman değil.

İlişkiyi düşünün Dersler(Öğrenci, Öğe, Öğretmen), öğrencilerin hangi konularda çalıştıkları ve bu konuları kimin öğrettiği hakkında bilgi depolayan. Konu alanı aşağıdaki kısıtlamaları uygular:

Belirli bir konuyu okuyan her öğrenciye yalnızca bir öğretmen tarafından eğitim verilir,

· her öğretmen yalnızca bir konuyu öğretir, ancak her konu birden fazla öğretmen tarafından öğretilebilir.

Bu kısıtlamalardan aşağıdaki işlevsel bağımlılıklar ortaya çıkar:

· (Öğrenci, Konu) → Öğretmen;

· Öğretmen → Konu.

İşlevsel bağımlılıklardan anahtarın ilişki olduğu sonucu çıkar Dersler bir dizi özellik olacak ( Öğrenci, Öğe}.

Davranış Dersler 3NF'de. Ancak güncelleme anormalliklerinden muzdariptir. Petrov'un Fizik okuduğu bilgisini silmek isterseniz, Profesör Serov'un Fizik öğrettiği bilgiler kaybolacaktır. Aynı zamanda Profesör Bely'nin Cebir'i öğrettiği bilgiler de kopyalanıyor.

Bu zorluklar, birincil özelliğin birincil olmayan özelliğe işlevsel bir bağımlılığının olmasından kaynaklanmaktadır. Bu problem Boyce-Codd normal formunda çözülmüştür.

İlişki şu şekilde: Boyce-Codd normal formu (BCNF) 3NF'deyse ve birincil niteliklerin birincil olmayan niteliklere bağımlılığı yoksa. Eşdeğer bir tanım, işlevsel bağımlılıkların tüm sol taraflarının aday anahtarlar olmasını gerektirir.

BCNF ile ilişkiyi azaltarak iki ilişki elde ederiz: Dersler_1(Öğrenci öğretmen) Ve Dersler_2(Öğretmen, Konu).

Çok değerli bağımlılıklar

Bağlanmak X çok değerli olarak tanımlar bağlanmak e V R(veya eönemli ölçüde bağlıdır X), eğer her bir özellik değeri X bir dizi nitelik değerine (muhtemelen boş) karşılık gelir e, hiçbir şekilde diğer niteliklerle ilişkili değildir R. Yani bir ilişkinin çok değerli bir bağımlılığa sahip olması için en az üç özelliğe sahip olması gerekir.

Çok değerli bir ilişki çift okla gösterilir: X→→Y.

İlişkiyi düşünün Öğretmen(Sayı , Çocuk adı , Öğe ,İş unvanı). Konu alanı aşağıdaki kısıtlamaları uygular:

Her öğretmenin birden fazla çocuğu olabilir.

Her öğretmen birden fazla konuyu öğretebilir,

Her öğretmen yalnızca bir pozisyona sahip olabilir,

· her konu birden fazla öğretmen tarafından öğretilebilir.

Daha sonra tutum Öğretmen iki çok değerli bağımlılığa ve bir işlevselliğe sahiptir:

· Numara→→Çocuğun_adı,

· Numara→→Öğe,

· Sayı→Konum.

Davranış Öğretmen, ilk olarak gereksiz bilgiler içerir - öğretme pozisyonu birkaç kez tekrarlanır. İkincisi, güncelleme anormalliklerinden muaf değil: Bir öğretmenin başka bir çocuğu varsa, ilişkiye bir tane değil, bu öğretmenin öğrettiği konu sayısı kadar sayıda tuple eklemek gerekir. Benzer şekilde başka bir konu eklerken öğretmenin çocuk sayısı kadar tuple eklemeniz gerekir. Ve eğer öğretmenin çocuğu yoksa, o zaman hangi konuları öğrettiğine dair bilgi ilişkiye hiçbir şekilde dahil edilemez.

Bu anomalilerden kurtulmak için ilişkiyi dördüncü normal forma getirmek gerekir.

İlişki şu şekilde: dördüncü normal form (4NF), Boyce-Codd normal formundaysa ve işlevsel olmayan çok değerli bağımlılıklar yoksa.

İlişkiyi getirdikten sonra Öğretmen 4NF'ye göre üç ilişki elde ederiz:

Öğretmen_1(Sayı , İş unvanı),

Öğretmen_2(Sayı , Çocuk adı ),

Öğretmen_3(Sayı , Öğe ).

Ayrışmanın Özellikleri

Veritabanı normalizasyonu veya işlevsel bağımlılık, bir değerin herhangi bir kesinti olmaksızın bir sıradaki bir sonraki değere yumuşak geçişe izin verdiği bir durumdur. Bu tür bir durumda veri tabanında herhangi bir gecikme veya sorun yaşanmadan gerçekleşen bir bilgi akışı sağlanır ve verinin bütünlüğü korunur. İşlevsel bağımlılık, ilişkisel veritabanlarının oluşturulması ve işletilmesi açısından kritik öneme sahiptir çünkü süreç, tek bir değerle veya karşılık gelen değerlere sahip bir veri türüyle hafif ilişkilendirmeleri içerir.

İşlevsel bağımlılığın işin nasıl yapıldığını anlamanın en kolay yollarından biri, her Rus vatandaşına düzenli olarak verilen Sosyal Güvenlik numarası gibi bir devlet kimlik numarası kullanmayı düşünmektir. Bu numaranın kimlik tespit aracı olarak kullanılmasıyla işverenlerin bu numaranın sahibine ilişkin bilgilere ulaşması; Potansiyel kredi verenler ve diğer alacaklılar, başvuru sahibi hakkındaki ilgili finansal bilgilere erişmek için erişim numarasını kullanabilir ve bu numara, ödenen vergiler, tahakkuklar ve vergiler, bir yıldan diğerine gelir ve kişi emekli olduğunda emeklilik hesaplamaları gibi bilgilere erişim sağlar. Emekli olduktan sonra eninde sonunda hak ettiğinin tadını çıkaracak. Çoğu durumda işverenler, çalışanın elektronik dosyasının geri kalanına erişmek için aslında çalışanın birincil kimlik numarasıyla aynı numarayı veya ilişkisel araç sayısının bir kısmını kullanabilir.

Veritabanı tasarımı ve işletiminin bir parçası olarak, işlevsel bir bağımlılık, kullanıcıların daha sonra istenen bilgiyi elde etmek için kullanılabilecek belirli değerleri girmesine olanak tanır. Örneğin bir satış elemanı, kurumsal bir müşteriyle ilişkili ilgili kişilerle ilişkili tüm kayıtları almak için bir şirket adı değeri girebilir. Benzer şekilde, satış yapmayı planlayan bir satış elemanı, bir değer olarak ve varış yerinin yakınında bulunan tüm müşterilerin adlarına ve iletişim bilgilerine erişim aracı olarak bir şehir adı girebilir, bu da onun bu müşterilerle toplantılar düzenlemesini kolaylaştırabilir. .

İşlevsel bağımlılığı sağlayan sistem gibi kesin yapı uygulamaya bağlı olarak değişiklik gösterse de nihai sonuç yine aynı olacaktır. Bir anlam diğerine bağlıdır ve ihtiyacınız olan bilgiye nispeten kolaylıkla erişmenizi sağlar. Eski yöntem olan basılı kopya dosyalarına güvenmek yerine veritabanlarında çok sayıda kaydın depolandığı göz önüne alındığında, bu tür ilişkisel bağımlılık, ilgili verileri bulmak ve kullanmak için çok önemlidir.