• İşlevsel bağımlılık ve ilişkisel veritabanları

    Dersler No. 8-9.

    fonksiyonel bağımlılık normal formlar.

    Dersin amacı: öğrencileri niteliklerin işlevsel bağımlılığının tanımına, ilk ilişkinin normalleştirilmesi kavramına tanıtmak, kayıt dosyalarını normalleştirme ihtiyacına yol açan nedenler hakkında konuşmak, sağlamanın yollarını tanıtmak. Belirli bir örnek kullanarak normal formları belirlemek için gerekli tablo normalliği düzeyi.

    İşlevsel Bağımlılıklar

    Normalleştirme teorisi, genel olarak veritabanı teorisi gibi, matematiksel aparat, küme teorisine ve cebirin unsurlarına dayanır.

    Aynı veriler tablolar halinde gruplandırılabilir (ilişkiler) Farklı yollar. Niteliklerin ilişkilerde gruplandırılması rasyonel olmalı (yani, veri tekrarı minimum düzeyde olmalıdır) ve bunların işlenmesi ve güncellenmesi için prosedürleri basitleştirmelidir. Veri fazlalığının ortadan kaldırılması, veritabanı tasarımının en önemli görevlerinden biridir ve normalleştirme ile sağlanır.

    Tabloların normalleştirilmesi (ilişkiler)- bu, yinelemeyi ortadan kaldırmanıza izin veren, veritabanında depolananların tutarlılığını sağlayan ve veritabanını korumak (girmek, düzeltmek) için işçilik maliyetlerini azaltan tabloların (ilişkilerin) oluşumuna ilişkin resmi bir kısıtlama aygıtıdır. Normalleştirme süreci, ilk veritabanı ilişkilerinin daha basit ilişkilere ayrıştırılmasından (çözümlenmesinden) oluşur. Bu sürecin her aşaması, ilişkiler şemasını birbirini izleyen normal biçimlere getirir. Normalleştirmenin her aşaması için, veritabanı ilişkilerinin karşılaması gereken bir dizi kısıtlama vardır. Normalleştirme, anahtar olmayan gereksiz bilgileri veritabanı tablolarından kaldırmanıza olanak tanır.

    Öncelikle bazı kavramları hatırlayalım:

    basit özellik değerleri bölünemez olan bir niteliktir. Başka bir deyişle, tabloda Tam Ad veya Adres türünde hiçbir alan yoktur - bunlar ilk durumda Soyadı, Adı, Patronimik alanlarına ve ikinci durumda Posta Kodu, Şehir vb. alanlarına ayrıştırılır. .

    Karmaşık (bileşik) öznitelik birkaç atomik özelliğin birleştirilmesiyle elde edilir, aksi halde denir vektör veya veri toplama.

    İşlevsel bağımlılığın tanımı:İzin vermek X ve Y, bir ilişkinin nitelikleridir. herhangi bir zamanda keyfi bir değer ise X tek bir Y değerine karşılık gelir, o zaman Y işlevsel olarak bağımlıdır X'ten (XE)

    Anahtar bileşik ise, o zaman herhangi bir öznitelik bir bütün olarak anahtara bağlı olmalıdır, ancak işlevsel olarak bileşik anahtarın herhangi bir bölümüne bağımlı olamaz, örn. işlevsel bağımlılık şu şekildedir: (X 1 , X 2 , ..., X)Y.

    İşlevsel bağımlılık tam veya eksik olabilir.

    Eksik bağımlılık anahtar olmayan bir özniteliğin bir bileşik anahtarın parçasına bağımlılığı olarak adlandırılır .


    Eksiksiz fonksiyonel bağımlılık anahtar olmayan bir özniteliğin bileşenlerine değil tüm bileşik anahtarına bağımlılığı olarak adlandırılır.

    Geçişli fonksiyonel bağımlılığın tanımı:İzin vermek X, Y, Z- bir ilişkinin üç niteliği. -de Bu Tom XY ve YZ, ancak ters karşılık gelme yoktur, yani Y, Z'ye bağlı değildir ve X, Z'ye bağlı değildir. Y. Sonra derler ki Z geçişli olarak X'e bağlıdır.

    Çok değerli bağımlılık tanımı: X ve Y bir ilişkinin öznitelikleri olsun. Y özelliği oldukça bağımlı eğer X özelliğinden. her X değeri, ilişkiden diğer niteliklerle ilgili olmayan bir dizi Y değerine karşılık gelir. Çok değerli bağımlılıklar birden çoğa (1:M), çoktana (M:1) veya çoktan çoğa (M:M) olabilir ve sırasıyla şu şekilde gösterilir: X=>Y, Y<=X и X<=>Y. Örneğin, bir öğretmen birkaç ders verir ve her ders birkaç öğretmen tarafından öğretilebilir, o zaman bir bağımlılık adı vardır. <=> Öğe.

    Aşağıdaki örneği ele alalım: Fakültenin eğitim bölümü için öğretmenler hakkında aşağıdaki özellikleri içeren bir veri tabanı oluşturulduğunu varsayalım:

    Tam adı - öğretmenin soyadı ve baş harfleri (soyadı ve baş harflerinin çakışması hariçtir).

    Pozisyon - öğretmen tarafından tutulan pozisyon.

    Maaş, öğretmenin maaşıdır.

    Deneyim - öğretim deneyimi. D_Stage - kıdem bonusu.

    Bölüm - öğretmenin kayıtlı olduğu bölümün numarası.

    Konu - öğretmen tarafından okunan konunun (disiplin) adı.

    Grup - öğretmenin dersleri yürüttüğü grubun sayısı.

    Sınıf türü - çalışma grubundaki öğretmen tarafından yürütülen sınıfların türü.

    İlk tutum ÖĞRETMEN

    Veritabanı normalizasyonu veya işlevsel bağımlılık, bir değerin herhangi bir kesinti olmadan bir dizideki bir sonraki değere yumuşak bir geçişe izin verdiği bir durumdur. Bu tür bir durum için veritabanında herhangi bir gecikme veya sorun olmadan akan bir bilgi akışı vardır ve verilerin kendi bütünlüğü korunur. İşlevsel bağımlılık, tek bir değerle hafif ilişkilendirmeleri veya karşılık gelen değerlerle veri türünü içerdiğinden, ilişkisel veritabanlarının oluşturulması ve işletilmesi için kritik öneme sahiptir.

    İşlevsel bağımlılığın nasıl bir iş yaptığını anlamanın en kolay yollarından biri, Rusya'nın her vatandaşına düzenli olarak verilen sosyal güvenlik numarası gibi bir devlet kimlik numarası kullanmayı düşünmektir. Bu numarayı bir kimlik tespiti aracı olarak kullanmak suretiyle, işverenlerin bu numaranın sahibine ilişkin bilgilere ulaşması mümkündür; potansiyel alacaklılar ve diğer alacaklılar, başvuru sahibi hakkında ilgili mali bilgilere erişmek için erişim numarasını kullanabilir ve numara, vergiler, tahakkuklar ve ödenen vergiler, bir yıldan diğerine gelir gibi bilgilere erişmeye ve kişinin emekliliği hesaplamasına izin verir. emekli olduktan sonra hak ettiği zevki alacaktır. Çoğu durumda, işverenler, çalışanın elektronik dosyasının geri kalanına erişmek için çalışanın birincil kimlik numarasıyla aynı numarayı veya ilişkisel araç numarasının bir kısmını kullanabilir.

    Veritabanı tasarımı ve işleyişinin bir parçası olarak, işlevsel bağımlılık, kullanıcıların istenen bilgileri elde etmek için kuyruğun kullanılabileceği bazı değerleri girmesine izin vermeye hizmet eder. Örneğin, bir satış görevlisi, 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ı, gideceği şehrin yakınındaki tüm müşterilerin isim ve iletişim bilgilerine bir değer olarak ve bir araç olarak şehrin adını girebilir ve bu müşterilerle görüşme ayarlamasını kolaylaştırır.

    İşlevsel bir bağımlılık sağlayan bir sistem gibi tam yapı, uygulamaya bağlı olarak değişebilirken, sonuç yine de 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 sabit dosya kopyalama yöntemine güvenmek yerine veritabanlarında saklanan bu kadar çok kayıtla, bu tür ilişkisel bağımlılık, ilgili verileri bulmak ve kullanmak için çok önemlidir.

    Bilgi her zaman yeterli dinamik ilgiye sahip olmuştur. Programlama dillerinin, ilişkisel veritabanlarının ve bilgi teknolojilerinin gelişimi ilginin içeriğini ve yapısını kökten değiştirmiştir. Belirli bir katı temsil sistemi gelişmiştir. Resmileştirme, tam matematik ve ikili ilişkiler, başarılı ve hızla gelişen bir bilgi ve deneyim alanı haline geldi.

    Doğal bilgi dünyası dinamiklerini değiştirmedi ve içerik ve yapı geliştirerek yeni zirvelere yükseldi. Pürüzsüz formları vardır ve doğada hiçbir şey yoktur. "dikdörtgen". Bilgi, elbette, biçimlendirmeye uygundur, ancak dinamikleri vardır, yalnızca işlenmesi için veriler ve algoritmalar değişmez, görevlerin kendisi ve uygulama alanları da değişir.

    Bilgi > biçimlendirme >> veri

    Bilgi, programcının gördüğü gibi bir bilgi yapısına, bir veritabanına ...) dönüşür. Bu vizyonun doğru olduğuna dair bir garanti yoktur, ancak programı işi görürse, o zaman veriler muhtemelen uygun şekilde sunulmuştur.

    Bilgilerin ne kadar doğru bir şekilde resmileştirildiği sorusu an meselesidir. Şimdiye kadar, dinamik kavramı (değişen kullanım koşullarına kendini uyarlama) yalnızca bir programlama hayaliydi.

    İşlevsel bağımlılık: "doğru çözüm = program (programcı)" ve koşul: "göreve sürekli uyum" çoğu durumda geçerlidir, ancak yalnızca birlikte. Ama bu o değil matematiksel temel, veritabanları oluşturulurken kullanılır.

    Doğrudan ifade: problem çözmek için bilgi ve algoritmaların doğal ve sürekli dinamikleri her zaman doğrudur. Ve bunlar ikili ilişkiler + katı matematik + kesin biçimsel yapılar, + ...

    ve veritabanları

    Verilerin nasıl saklandığı uzun zamandır önemsiz olmuştur: Veri deposu veya harici cihaz. Donanım bileşeni, istikrarlı bir geliştirme hızına ulaştı ve şunları sağlıyor: iyi kalite büyük hacimlerde.

    Veri kullanım durumlarında farklılık gösteren ana depolama seçenekleri şunlardır:

    • Dosyalar;
    • Veri tabanı.

    Birincisi programcının insafına kalmıştır (ne yazılacağı, hangi formatta, nasıl yapılacağı, nasıl okunacağı ...), ikincisi hemen basit bir işlevsel bağımlılığı bilme ihtiyacını beraberinde getirir.

    Dosyalarla çalışırken (astronomik değil, makul boyutta) bilgi alma ve yazma hızı çok yüksektir ve bir veritabanıyla benzer işlemlerin hızı bazen fark edilir derecede yavaş olabilir.

    Kişisel deneyim ve ortak akıl

    Tarihte ulaşılan sınırların ötesine geçme girişimleri oldu, ancak bugüne kadar ilişkisel temeller veri. Büyük bir teorik potansiyel birikmiştir, uygulama pratiği kapsamlıdır ve geliştiriciler son derece kalifiyedir.

    İşlevsel bağımlılık kavramı, veritabanı geliştiricileri tarafından programcıya, karmaşık bilgi yapıları oluşturma, onlarla çalışma, bilgileri örnekleme ve kaydetme konusunda zengin matematiksel ve mantıksal deneyimi kullanmayı amaçlamasa bile empoze edilir.

    En basit durumda bile, programcı çalışmayı seçtiği veritabanı mantığına bağlıdır. Kanunları takip etme arzusu yok, dosyaları kullanabilirsiniz, çok fazla dosya alırsınız ve çok kişisel deneyim. Çok fazla kişisel zaman harcanacak ve görev uzun sürede çözülecek.

    İşlevsel bağımlılık örnekleri ne kadar karmaşık görünse de, anlam ve mantığın derinliklerine dalmak hiç de gerekli değildir. Kolektif zihnin mükemmel veritabanları yaratmayı başardığı sıklıkla kabul edilmelidir. farklı boyut ve işlevsellik:

    • katı Kahin;
    • zorlu MS SQL Sunucusu;
    • popüler MySQL.

    Doğru ellerde, iyi bir üne sahip, kullanımı kolay, hızlı harika ilişkisel veritabanları. Kullanımları zamandan tasarruf sağlar ve başka bir yardımcı kod sayfası yazma ihtiyacını ortadan kaldırır.

    Programlama ve verilerin özellikleri

    Uzun zamandır programlama, bir şeyi değişen bilgilere, göreve veya kullanım koşullarına bir şekilde uyarlamak için bir şeyi sürekli olarak yeniden yazma, öncekilerin çalışmalarını tekrarlama hastalığına sahipti.

    İşlevsel bağımlılığın özelliği, programlamada olduğu gibi, bir hatanın çok pahalı olabilmesidir. Görev nadiren kolaydır. Genellikle, bilgilerin resmileştirilmesi sırasında, verilerin karmaşık bir temsili elde edilir. Genellikle öğeleri ayırt edilir, daha sonra anahtarlarla belirli ilişkilere bağlanırlar, ardından tablolar oluşturmak için algoritmalar, sorgular, bilgi çıkarmak için algoritmalar ayarlanır.

    Sıklıkla büyük önem kodlamaya bir bağı vardır. Tüm veritabanları sunmaz mobil çözümler, üzerinde bir düzine veritabanının bulunduğu, mükemmel ve kararlı bir şekilde çalışan, mükemmel şekilde yapılandırılmış bir MySQL'in, geliştiriciyi on birinci veritabanını zaten var olanlara benzer hale getirmeye nasıl zorladığıyla sık sık karşılaşabilirsiniz.

    öyle zamanlar olur ki Paylaşılan Evsahipliği PHP'nin işlevselliğini kısıtlar ve bu veritabanı erişim programlamasını etkiler.

    İÇİNDE modern programlama program algoritmasının sorumluluğu, veri modelini oluşturma sorumluluğuna eşdeğerdir. Her şey işe yaramalı, ancak kişi her zaman teorinin çılgınlığına dalmamalı.

    DB: basit veri bağımlılığı

    Her şeyden önce, veritabanı kavramı hem bir yönetim sistemi olarak bir veritabanı (örneğin, MySQL) hem de görevin verilerini ve aralarındaki ilişkileri yansıtan belirli bir bilgi yapısıdır. Bir MySQL veritabanıçeşitli uygulama alanlarında herhangi bir sayıda bilgi yapısını "tutar". Bir Oracle tabanı, sağlayabilir bilgi süreçleriüzerindeki verilerin güvenliğini ve güvenliğini kontrol etmek için büyük bir şirket veya bir banka en yüksek seviye, farklı enstrüman ortamlarında, farklı mesafelerde bulunan birçok bilgisayarda bulunur.

    Genel olarak ilişkinin ana şey olduğu kabul edilir. ilişkisel model. Temel ilişki, adları olan sütunlar ve değerleri olan satırlar kümesidir. Klasik "dikdörtgen"(tablo) - basit ve etkili ilerleme. Bir veritabanının karmaşıklığı ve işlevsel bağımlılığı şu durumlarda başlar: "dikdörtgenler" birbirleriyle etkileşime geçmeye başlar.

    Her tablodaki her sütunun adı, görev bağlamında benzersiz olmalıdır. Aynı veriler iki tabloda olamaz. Kavramların anlamlarını bilin:

    • "varlıkları tanımla";
    • "fazlalığı ortadan kaldır";
    • "ilişkileri düzelt";
    • "inanılırlığı sağlamak".

    Bir veritabanı kullanmak ve belirli bir görev için bir veri modeli oluşturmak için temel bir gereklilik.

    Bu kavramlardan herhangi birinin ihlali - algoritmanın düşük verimliliği, yavaş veri örnekleme, veri kaybı ve diğer sorunlar.

    İşlevsel bağımlılık: mantık ve anlam

    Bir fonksiyonun bir dizi bağımsız değişkenin bir değerler kümesine karşılık gelmesi olduğu ve bir işlevin yalnızca bir formül veya grafik olmadığı, aynı zamanda bir dizi değer tarafından ayarlanabileceği gerçeği hakkında, ilişki demetleri hakkında okuyamazsınız. - bir masa.

    Gerekli değildir, ancak işlevsel bir bağımlılığı şu şekilde temsil etmek hiç de zarar vermez:

    F(x1, x2, …, xN) = (y1, y2, …, yN).

    Ancak girdinin bir tablo olduğunu, çıktının da bir tablo veya belirli bir çözüm olduğunu anladığınızdan emin olun. Tipik olarak işlevsel bir bağımlılık, tablolar, sorgular, ayrıcalıklar, tetikleyiciler, saklı yordamlar ve veritabanının diğer anları (bileşenleri) arasındaki ilişkilerin mantığını kurar.

    Genellikle tablolar önce birbirine sonra sonuca çevrilir. Ancak işlevsel bağımlılığın kullanımı sadece böyle bir fikirle sınırlı değildir. Programcının kendisi, veri resminin kendi temsilini oluşturur, bilgi yapısı...ne isim verdiğiniz önemli değil, ancak belirli bir veritabanı üzerinde çalışıyorsa, mantığına göre inşa edilmeli, anlamı ve kullanılan dilin, genellikle SQL lehçesi dikkate alınmalıdır.

    Bir veritabanının işlevsel bağımlılık özelliklerine, kullanılan veritabanının lehçesi aracılığıyla erişilebileceği iddia edilebilir. SQL dili. Ancak anlamak çok daha önemlidir: Geliştirmenin tüm iniş ve çıkışlarından sonra, çok fazla veri tabanı hayatta kalmadı, ancak bu dilin birçok lehçesi ve veritabanlarında iç yapıların özellikleri de var.

    Eski güzel Excel hakkında

    Bilgisayar kendini olumlu yönden gösterdiğinde, dünya hemen programcılara ve kullanıcılara bölündü. Kural olarak, ilk kullanım:

    • PHP, Perl, JavaScript, C++, Delphi.
    • MySQL, Oracle, Visual FoxPro.
    • kelime.
    • Excel.

    Bazı kullanıcılar Word veritabanında kendi işlerini (programcıların yardımı olmadan) yapmayı başarır - gerçek bir saçmalık.

    Excel'de veritabanları oluşturmak için kullanıcı deneyimi pratik ve ilgi çekicidir. Önemli olan, Excel'in kendi içinde işlevsel, renkli ve pratik olmasıdır.

    Tablo fikri, işlevsel bağımlılık kavramını açık ve erişilebilir bir şekilde tanımladı, ancak her veritabanının nüansları var. Her birinin kendi "yüzü" vardır, ancak Excel'den Oracle'a kadar herkes manipüle eder. basit kareler, yani tablolar.

    Excel'in bir veritabanı olmadığı, ancak birçok kullanıcının (programcı olmayan) onu bu şekilde kullandığı ve Oracle'ın veritabanları alanındaki büyük bir geliştirici ekibinin en karmaşık ve güçlü başarısı olduğu düşünüldüğünde, bunu kabul etmek doğal hale geliyor. veritabanı, belirli bir programcının (ekip) belirli bir sorun ve çözümü hakkında bir temsilidir.

    İşlevsel bağımlılık nedir, neyle, nerede, neden ... yalnızca yazar veya onlardan oluşan bir ekip için açıktır.

    İlişkisel İlişkilerin Nereye Gideceği Hakkında

    Bilimsel ve teknolojik ilerleme çok sancılı ve bazen acımasız bir süreçtir. Veritabanlarının nasıl başladığını, *.dbf'nin ne olduğunu, sibernetiğin nasıl damgalandığını hatırlarsanız, bilgisayar bilimine aşık oldular ve hareketin önünde engeller oluşturmaya başladılar. yüksek teknolojiülke düzeyinde, ilişkisel veritabanlarının neden bu kadar dayanıklı ve iyi olduğu netleşiyor. Neden klasik programlama tarzı bu güne kadar yaşarken, nesne yönelimli programlama basitçe takdir ediliyor, ancak henüz hakim değil.

    ne kadar güzel olursa olsun matematik bağlamında fonksiyonel bağımlılık:

    Bu ikili bir ilişki değil, daha doğrusu, birçok nitelik arasında ilişki kurma fikrini yeniden düşünmek, "birden çoğa", "çoktan bire", "çoktan çoğa" veya "çoka" ilişkileri keşfetmek için bir fırsattır. genel olarak ve özellikle bir".

    İlişkiler için birçok seçenek var. Mantıklı matematik ve katı! Bilgi kendi matematiğidir, özeldir. İçinde formaliteden ancak çok büyük bir eksi ile bahsedilebilir.

    Personel departmanının çalışmalarını resmileştirebilir, petrol üretimi veya süt, ekmek üretimi için otomatik bir kontrol sistemi yazabilir, devasa bir Google, Yandex veya Rambler veritabanında seçim yapabilirsiniz, ancak sonuç her zaman statik ve her an olacaktır. zaman aynı!

    İşlevsel bağımlılık = katı mantık ve matematik = veritabanlarının temeli ise, o zaman ne tür dinamiklerden bahsedebiliriz. Herhangi bir çözüm resmi olacaktır, herhangi bir resmi veri modeli + titiz algoritma = kesin ve net çözüm. Herhangi bir programın bilgisi ve kapsamı her zaman değişmektedir.

    Örnek arama motoru aynı arama ifadesinde bir veya iki saat içinde ve kesinlikle bir günde aynı olamaz - eğer arama ifadesi sitelerin, kaynakların, bilginin ve diğer unsurların sayısının sürekli değiştiği bilgi alanını ifade eder.

    Program tamamen matematiksel olsa ve veritabanı dinamikleri düşünmese bile, her şey her zaman bir çizgidir. Ve ipin bir uzunluğu vardır. Ve sonsuz olamaz. Bir değişken bile olamaz, yalnızca koşullu bir değişken olabilir. Diğer şeylerin yanı sıra, matematiksel ve ikili bürokratik aparatına sahip herhangi bir veritabanı çok fazla formalite gerektirir ve bu, örnekleme ve bilgi işlemenin hız + kalitesidir.

    Ve veritabanındaki belirli alanlar sayılar, özellikle gerçek olanlar ise, kısıtlamalara aşağıdakiler eklenecektir: basamak sayısı, "e" harfinin varlığı, sunum formatı - kısacası, her yerde ve her zaman elimizde önemli veritabanı işlevsel bağımlılık özellikleri:çok sayıda ikili formalite ve katı matematiksel kısıtlamalar içeren koşullu olarak değişken uzunluklu diziler.

    Tonu değiştirir ve dinamiklerin nabzını dinlerseniz, her şey nesnelere boyanabilir. İlk yaklaşım olarak, tablodaki sütun adı bir nesnedir, adlar listesi de bir nesnedir, kısaca tablo başlık nesnesidir ve başlıktaki sütunların adlarını içerir. Ve hiç şapka olmayabilir ...

    Ancak tablonun satırları olabilir. Ve bir dizide değerler olabilir. Ve neden hep aynı numara olsunlar? Tam kare masa- bu özel ve çoğu durumda özeldir.

    Veritabanındaki tüm yapıları nesneler olarak temsil edersek, katı ikili ilişkiler kurmamız gerekmeyebilir. Bunun doğal ve gerçek bir anlamı vardır, çünkü nesnel (kesinlikle matematiksel olmayan) mantığa göre, bilgi dinamiklerini ve görevlerin var olduğu ortamı yansıtır.

    İşlevsel bağımlılıklar

    İşlevsel bağımlılık, nitelikler arasındaki ilişkiyi açıklar ve normalleştirmenin temel kavramlarından biridir. İlişkisel şemanın özniteliklere (A, B, C,…, Z) sahip 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 özniteliğin benzersiz bir adı vardır.

    A ve B, bir R ilişkisinin öznitelikleriyse ve A'nın her değeri, B'nin yalnızca bir değeriyle ilişkilendiriliyorsa (ve özniteliklerin her biri bir veya daha fazla öznitelikten oluşabilir), o zaman B özniteliği işlevsel olarak bağımlı A özelliğinden (BAA).

    Her koşulda geçerli olan işlevsel bir 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 bazı ilişkilerin A, B ve C öznitelikleri için şu anlama gelir: eğer AàB ve BàC ise, o zaman C geçişli olarak B özniteliği aracılığıyla A özniteliğine 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ığını ortadan kaldırmak için, yeterli minimum bağımlılık kümesini kullanmak gerekir.

    Normalleştirme kullanan veritabanı tasarımı, anlambilim açısından açık olan işlevsel bağımlılıkların tanımıyla başlar, yani. ilk normal forma indirgeme.

    Birinci normal formdaki bir tablo aşağıdaki gereksinimleri karşılamalıdır:

    1) tabloda yinelenen kayıtlar olmamalıdır;

    2) tablo tekrar eden alan gruplarını içermemelidir;

    3) her alan semantik olarak bölünmez olmalıdır.

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

    AàB fonksiyonel bağımlılığı tamamlamak A'dan herhangi bir özniteliğin kaldırılması, bu bağımlılığın kaybına neden oluyorsa, işlevsel bir bağımlılık. AàB fonksiyonel bağımlılığına denir kısmi, eğer A'da silindiğinde bu bağımlılığın korunduğu belirli bir özellik varsa.

    Üçüncü normal formdaki bir tablo, 2NF'nin tüm gereksinimlerini karşılamalıdır, anahtar olmayan alanların hiçbiri, başka bir anahtar olmayan alan tarafından, yani birinci ve ikinci normal formda olan ve hiçbir özniteliği olmayan bir ilişki tarafından tanımlanmaz. bu birincil anahtara geçişli işlevsel bağımlılıkta olacak birincil öznitelik anahtarına dahil edilmiştir.

    Boyce Normal Form (BCNF), bir ilişkinin tüm potansiyel anahtarlarını hesaba katan, ancak daha sıkı kısıtlamalarla işlevsel bağımlılıklara dayalıdır.

    fonksiyonel bağımlılığın belirleyicisi başka bir özelliğin tamamen işlevsel olarak bağımlı olduğu bir niteliktir (veya nitelikler 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 ve BCNF arasındaki fark, eğer B özelliği birincil anahtar ve A özniteliği mutlaka bir aday anahtar değildir. BCNF için bu bağımlılığa yalnızca A özniteliği bir aday anahtar olduğunda izin verilir. Bu nedenle, her BCNF ilişkisi 3NF olduğu, ancak her 3NF ilişkisi BCNF olmadığı için BCNF, 3NF'nin daha katı bir versiyonudur.

    İlişkiler, yalnızca belirleyicilerinin her biri bir aday anahtarsa, 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 bir ilişkinin öznitelikleri (örneğin A, B ve C) arasındaki ilişkiyi temsil eder, öyle ki A'nın her değeri B için bir değerler kümesi ve C için bir değerler kümesidir. B ve C değerleri birbirinden bağımsızdır.

    Çok değerli bir bağımlılık ayrıca önemsiz veya önemsiz olarak tanımlanabilir. Bir R ilişkisinin birden çok değerli bağımlılığı AàB, B özelliği A veya nın bir alt kümesiyse, önemsiz olarak tanımlanır. Tersine, çok değerli bir bağımlılık, hiçbir koşul karşılanmazsa önemsiz olarak tanımlanır. Önemsiz bir çok değerli bağımlılık, bu ilişki üzerinde herhangi bir kısıtlama getirmez, ancak önemsiz olmayan bir bağımlılık getirir.

    Bir ilişki, bir izdüşüm işlemi kullanılarak bölümlendiğinde, kullanılan ayrıştırma yöntemi tam olarak belirlenir. Elde edilen ilişkiler geri bağlandığında, orijinal ilişkinin geri yüklenebilmesi gereklidir. Bu ayrıştırma denir kayıpsız bağlantı ayrıştırma(veya bir kazan-kazan veya eklemeli olmayan birleştirme) çünkü orijinal ilişkinin tüm verilerini korur ve ek boş satırların oluşturulmasını önler.

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

    Birden çok niteliği tek bir ilişkide birleştirmek rastgele yapılmaz. Bu konuda saklanacak veriler birbirine bağlıdır. Bu ilişki, ilişki öznitelikleri arasındaki bir dizi işlevsel bağımlılık tarafından tanımlanır. Bu, bir özniteliğin değerlerinin diğer özniteliklerin değerlerine bağlı olduğu anlamına gelir, yani öznitelik değerlerinin tüm kombinasyonlarına izin verilmez. Bu bağımlılıklar, konu alanının sınırlamalarından kaynaklanmaktadır. Örneğin, ile ilgili olarak Tedarik aşağıdaki kısıtlamalar vardır:

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

    her tedarikçi belirli bir fiyata mal teslim eder,

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

    Her deponun kendi hacmi vardır.

    Bu kısıtlamalar, aşağıdaki gibi formüle edilebilen bağımlılıklardır:

    adres işlevsel olarak tedarikçiye bağlıdır,

    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 ambar numarasına bağlıdır.

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

    oran olsun R bir şeması var R, X Ve Y- alt kümeler R. Davranış R tatmin eder işlevsel bağımlılık X→Y, Eğer π Y (σ X=x (r)) her değer için en fazla bir demet vardır xОX, yani X niteliklerinin değerleri benzersiz bir şekilde Y niteliklerinin değerlerini belirler.

    İşlevsel bağımlılık aşağıdaki gibi gösterilecektir:

    Satıcı → Adres,

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

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

    · Depo → Hacim.

    Ve şöyle okurlar:

    · Adresi tedarikçi belirler,

    Mal ve Tedarikçinin Fiyatı belirlemesi,

    · Depoyu Mal ve Tedarikçi belirler,

    · Hacmi Depo belirler.

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

    normal formlar

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

    Normal biçimler, ilişkinin şemasını yukarıda listelenen istenmeyen özelliklerden kurtaran kısıtlamalardır. İlişkileri normal forma getirmeden önce, konu alanında var olan öznitelikler arasındaki tüm işlevsel bağımlılıkları oluşturmak gerekir.

    ilişki şeması R içinde Birincil normal form (1NF) tüm niteliklerin değerleri atomik ise (bileşik değil), yani her bir özelliğin değeri ne bir liste ne de bir değerler dizisidir.

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

    Şemayı 1NF'ye getirmek için tüm bileşik nitelikleri basit olanlarla değiştirmeniz gerekir.

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

    ilişki şeması R konumlanmış ikinci normal form (2NF) ilk normal biçimdeyse ve birincil olmayan her öznitelik işlevsel olarak tamamen birincil anahtara bağımlıysa.

    Bir anahtara tamamlanmamış işlevsel bağımlılık nedir? Anahtarda yer almayan herhangi bir öznitelik işlevsel olarak şuna bağlıysa, ilişkide böyle bir bağımlılık vardır: parçalar anahtarda bulunan nitelikler. Birincil olmayan herhangi bir öznitelik, ilişki anahtarının tanımıyla zorunlu olarak tüm birincil özniteliklere işlevsel olarak bağımlıdır. Ve ek olarak, birincil olmayan herhangi bir özellik, işlevsel olarak birincil özelliklerin hepsine değil, bazılarına bağlıysa, o zaman bu eksik bir işlevsel bağımlılıktır.

    Örneğin, ile ilgili olarak Tedarik birincil nitelikler Ürün Ve Sağlayıcı. Bağlanmak Fiyat işlevsel olarak tamamen anahtara ve özniteliğe bağlıdır Adres anahtarın bir kısmına bağlıdır, yani yalnızca özniteliğe bağlıdır Sağlayıcı, bu eksik 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 ayırmanız gerekir:

    Şema projeksiyonu gerçekleştirme R işlevsel olarak tamamen anahtara bağımlı olan birincil niteliklere ve niteliklere, yani anahtara tamamen bağımlı olmayan birincil olmayan nitelikleri hariç tutun,

    Her tamamlanmamış işlevsel bağımlılık için bir şema projeksiyonu gerçekleştirin R bu bağımlılığa dahil olan nitelikler üzerinde, yani ilişki anahtarının bir kısmını bırakın R ve işlevsel olarak o parçaya bağımlı olan nitelikler.

    ilişki örneğinde Tedarikşemayı 2NF'ye düşürmenin bir sonucu olarak, iki ilişki elde edilecektir:

    Sarf Malzemeleri_1(Ürün, Sağlayıcı, Fiyat, Stok, Hacim),

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

    Ancak, ambarın hacmi hakkındaki bilgiler mükerrer olmaya devam ediyor. Şemanın bu dezavantajını ortadan kaldırmak için üçüncü bir normal form vardır.

    ilişki şeması R içinde üçüncü normal biçim (3NF) ikinci normal formdaysa ve anahtarda birincil olmayan özniteliklerin geçişli bağımlılıkları yoksa.

    Geçişli bağımlılıklar nelerdir? Geçişli bir bağımlılık, birincil olmayan bir öznitelik, işlevsel olarak bir anahtara işlevsel olarak bağımlı olan başka bir birincil olmayan özniteliğe işlevsel olarak bağımlı olduğunda ortaya çıkar.

    ilişki şeması Sarf Malzemeleri_1(Ürün, Sağlayıcı, Fiyat, Stok, Hacim) geçişli bir bağımlılığa sahip olduğu için 3NF'de değildir:

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

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

    Şema projeksiyonu gerçekleştirme 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 nitelikleri hariç tutun,

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

    ilişki örneğinde Sarf Malzemeleri_1şemayı 3NF'ye düşürmenin bir sonucu olarak, iki ilişki elde edilecektir:

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

    Teslimatlar_1_2(Stoklamak, Hacim).

    Böylece, ilişkinin ilk şemasını, dikkate alınan kurallara göre art arda birkaç başka şemaya bölerek, 3NF'de, bölümün başında tartışılan bilgilerin güncellenmesi ve çoğaltılması anormalliklerinden arınmış bir şema elde ederiz.

    Bir ilişki şemasını birkaç başka şemaya bölme işlemine ne ad verilir? ayrışma ilişki şemaları. Bir ilişkiyi normal formlardan birine indirgeyen ayrışıma denir. normalleşme.

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

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

    Teslimatlar_1_2(Stoklamak, Hacim),

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

    Yabancı anahtarlarla birbirine bağlanan üç ilişkiden oluşan böyle bir şema ile, tedarikçinin adresi ve deponun hacmi hakkında bilgi tekrarı olmayacak, eğer depo boşsa, o zaman hacmi veritabanında kalacaktır. tedarikçi mal tedarik etmezse, adresi yine de veritabanı verilerinde saklanacaktır.

    Gördüğünüz gibi, 3NF'deki şema, veritabanındaki yinelenen bilgilerden ve güncelleme anormalliklerinden kurtulur, ancak her zaman değil.

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

    bu konuyu okuyan her öğrenciye sadece bir öğretmen tarafından ders verilir,

    Her öğretmen yalnızca bir konuyu öğretir, ancak her konu birkaç öğretmen tarafından öğretilebilir.

    Bu sınırlamalar, aşağıdaki işlevsel bağımlılıklarla sonuçlanır:

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

    · Öğretmen → Konu.

    İşlevsel bağımlılıklardan, ilişkinin anahtarının 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 bilgileri kaldırmak gerekirse, Profesör Serov'un Fizik öğrettiği bilgiler kaybolacaktır. Aynı zamanda, Profesör Bely'nin Cebir öğrettiği bilgiler çoğaltılır.

    Bu zorluklara, birincil özelliğin birincil olmayana işlevsel bir bağımlılığı olduğu gerçeği neden olur. Bu problem Boyce-Codd normal formunda çözülür.

    ilişki içinde Boyce – Codd normal formu (BCNF), eğer 3NF'deyse ve birincil niteliklerin birincil olmayanlara bağımlılığı yoksa. Eşdeğer tanım, işlevsel bağımlılıkların tüm sol taraflarının aday anahtarlar olmasını gerektirir.

    İlişkiyi BCNF'ye getirerek iki ilişki elde ederiz: Dersler_1(Öğrenci öğretmen) Ve Dersler_2(öğretmen, konu).

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

    Bağlanmak X tanımlar bağlanmak Y V R(veya Y büyük ölçüde bağlıdır X) eğer her özellik değeri X bir dizi (muhtemelen boş) özellik değeriyle eşleşir Y, diğer özelliklerle ilgisiz R. Yani bir ilişkinin çok değerli bir bağımlılığa sahip olabilmesi için en az üç özelliğe sahip olması gerekir.

    Çok değerli bir bağımlılık, çift okla gösterilir: X→→Y.

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

    her öğretmenin birkaç çocuğu olabilir,

    her öğretmen birkaç konu öğretebilir,

    Her öğretmen sadece bir pozisyona sahip olabilir,

    Her konu birkaç öğretmen tarafından öğretilebilir.

    Daha sonra ilişki Öğretmen iki çok değerli bağımlılığa ve bir işlevsel bağımlılığa sahiptir:

    Numara→→Çocuk_Adı,

    Sayı→→Öğe,

    · Numara → Konum.

    Davranış Öğretmen, öncelikle gereksiz bilgiler içerir - öğretmenin konumu birkaç kez tekrarlanır. İkincisi, güncelleme anormalliklerinden arınmış değildir: Bir öğretmenin başka bir çocuğu varsa, ilişkiye bir demet değil, bu öğretmenin öğrettiği konu sayısı kadar eklemek gerekir. Aynı şekilde başka bir konu eklerken de öğretmenin sahip olduğu çocuk sayısı kadar demet eklemelisiniz. Ve eğer öğretmenin çocuğu yoksa, o zaman hangi konuları öğrettiğine dair bilgi hiçbir şekilde ilişkiye girilemez.

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

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

    ilişkiyi getirdikten sonra Öğretmen 4NF'ye üç ilişki elde ederiz:

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

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

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

    Ayrışma Özellikleri