DBMS - Szybki przewodnik

Database to zbiór powiązanych danych, a dane to zbiór faktów i liczb, które można przetworzyć w celu uzyskania informacji.

W większości dane reprezentują możliwe do zarejestrowania fakty. Dane pomagają w tworzeniu informacji opartych na faktach. Na przykład, jeśli mamy dane o ocenach uzyskanych przez wszystkich uczniów, możemy następnie wnioskować o nakładkach i ocenach średnich.

ZA database management system przechowuje dane w taki sposób, że łatwiejsze staje się pobieranie, manipulowanie i tworzenie informacji.

Charakterystyka

Tradycyjnie dane były organizowane w formatach plików. DBMS był wówczas nową koncepcją i wszystkie badania miały na celu przezwyciężenie niedociągnięć w tradycyjnym stylu zarządzania danymi. Nowoczesny DBMS ma następujące cechy -

  • Real-world entity- Nowoczesny system DBMS jest bardziej realistyczny i do projektowania architektury wykorzystuje elementy świata rzeczywistego. Wykorzystuje również zachowanie i atrybuty. Na przykład szkolna baza danych może wykorzystywać uczniów jako jednostkę, a ich wiek jako atrybut.

  • Relation-based tables- DBMS umożliwia jednostkom i relacjom między nimi tworzenie tabel. Użytkownik może zrozumieć architekturę bazy danych po prostu patrząc na nazwy tabel.

  • Isolation of data and application- System bazy danych jest zupełnie inny niż jego dane. Baza danych jest podmiotem aktywnym, podczas gdy dane określane są jako pasywne, na których baza danych działa i organizuje. DBMS przechowuje także metadane, czyli dane o danych, aby ułatwić własny proces.

  • Less redundancy- DBMS przestrzega zasad normalizacji, która rozdziela relację, gdy którykolwiek z jej atrybutów ma nadmiarowość w wartościach. Normalizacja to matematycznie bogaty i naukowy proces, który ogranicza nadmiarowość danych.

  • Consistency- Spójność to stan, w którym każda relacja w bazie danych pozostaje spójna. Istnieją metody i techniki, które pozwalają wykryć próbę opuszczenia bazy danych w niespójnym stanie. DBMS może zapewnić większą spójność w porównaniu z wcześniejszymi formami aplikacji do przechowywania danych, takimi jak systemy przetwarzania plików.

  • Query Language- DBMS jest wyposażony w język zapytań, co sprawia, że ​​wyszukiwanie i przetwarzanie danych jest bardziej wydajne. Użytkownik może zastosować tyle różnych opcji filtrowania, ile potrzeba, aby pobrać zestaw danych. Tradycyjnie nie było to możliwe, gdy używany był system przetwarzania plików.

  • ACID Properties - DBMS jest zgodny z koncepcjami Atomiczność, Cnieustępliwość, Isolacja i Durability (zwykle w skrócie ACID). Pojęcia te są stosowane w transakcjach, które manipulują danymi w bazie danych. Właściwości ACID pomagają bazie danych zachować dobrą kondycję w środowiskach wielotransakcyjnych i w przypadku awarii.

  • Multiuser and Concurrent Access- DBMS obsługuje środowisko wielu użytkowników i umożliwia im równoległy dostęp do danych i manipulowanie nimi. Chociaż istnieją ograniczenia dotyczące transakcji, gdy użytkownicy próbują obsługiwać ten sam element danych, ale użytkownicy zawsze są ich nieświadomi.

  • Multiple views- DBMS oferuje wiele widoków dla różnych użytkowników. Użytkownik będący w dziale sprzedaży będzie miał inny widok bazy danych niż osoba pracująca w dziale produkcji. Ta funkcja umożliwia użytkownikom skoncentrowany widok bazy danych zgodnie z ich wymaganiami.

  • Security- Funkcje takie jak wiele widoków zapewniają do pewnego stopnia bezpieczeństwo, gdy użytkownicy nie mogą uzyskać dostępu do danych innych użytkowników i działów. DBMS oferuje metody narzucania ograniczeń podczas wprowadzania danych do bazy danych i ich pobierania na późniejszym etapie. DBMS oferuje wiele różnych poziomów funkcji zabezpieczeń, co umożliwia wielu użytkownikom korzystanie z różnych widoków z różnymi funkcjami. Na przykład użytkownik z działu sprzedaży nie może wyświetlić danych należących do działu zakupów. Dodatkowo można zarządzać tym, ile danych działu sprzedaży ma wyświetlać się użytkownikowi. Ponieważ DBMS nie jest zapisywany na dysku jako tradycyjne systemy plików, złoczyńcom bardzo trudno jest złamać kod.

Użytkownicy

Typowy DBMS ma użytkowników z różnymi prawami i uprawnieniami, którzy używają go do różnych celów. Niektórzy użytkownicy pobierają dane, a inni tworzą ich kopię zapasową. Użytkownicy DBMS można ogólnie podzielić na następujące kategorie:

  • Administrators- Administratorzy utrzymują DBMS i są odpowiedzialni za administrowanie bazą danych. Są odpowiedzialni za dbanie o jego użytkowanie i przez kogo powinien być używany. Tworzą profile dostępu dla użytkowników i stosują ograniczenia, aby zachować izolację i wymusić bezpieczeństwo. Administratorzy dbają również o zasoby DBMS, takie jak licencja systemu, wymagane narzędzia oraz inne czynności związane z obsługą oprogramowania i sprzętu.

  • Designers- Projektanci to grupa osób, która faktycznie pracuje nad częścią projektową bazy danych. Dokładnie obserwują, jakie dane należy przechowywać iw jakim formacie. Identyfikują i projektują cały zestaw obiektów, relacji, ograniczeń i widoków.

  • End Users- Użytkownicy końcowi to ci, którzy faktycznie czerpią korzyści z posiadania DBMS. Użytkownicy końcowi mogą obejmować zarówno zwykłych widzów, którzy zwracają uwagę na dzienniki lub stawki rynkowe, jak i zaawansowanych użytkowników, takich jak analitycy biznesowi.

Projekt DBMS zależy od jego architektury. Może być scentralizowany lub zdecentralizowany lub hierarchiczny. Architektura DBMS może być postrzegana jako pojedyncza lub wielowarstwowa. Architektura wielowarstwowa dzieli cały system na powiązane, ale niezależnen moduły, które można niezależnie modyfikować, zmieniać, zmieniać lub zastępować.

W architekturze jednowarstwowej DBMS jest jedyną jednostką, w której użytkownik bezpośrednio siedzi w DBMS i używa go. Wszelkie zmiany wprowadzone tutaj zostaną wprowadzone bezpośrednio w samym DBMS. Nie zapewnia przydatnych narzędzi dla użytkowników końcowych. Projektanci baz danych i programiści zwykle wolą używać architektury jednowarstwowej.

Jeśli architektura DBMS jest dwuwarstwowa, to musi mieć aplikację, przez którą można uzyskać dostęp do DBMS. Programiści używają architektury dwuwarstwowej, w której uzyskują dostęp do DBMS za pośrednictwem aplikacji. Tutaj warstwa aplikacji jest całkowicie niezależna od bazy danych pod względem działania, projektu i programowania.

Architektura trójwarstwowa

Architektura trójwarstwowa oddziela swoje warstwy od siebie na podstawie złożoności użytkowników i sposobu, w jaki wykorzystują dane obecne w bazie danych. Jest to najczęściej używana architektura do projektowania DBMS.

  • Database (Data) Tier- W tej warstwie znajduje się baza danych wraz z językami przetwarzania zapytań. Mamy również relacje, które definiują dane i ich ograniczenia na tym poziomie.

  • Application (Middle) Tier- W tej warstwie znajduje się serwer aplikacji i programy uzyskujące dostęp do bazy danych. Dla użytkownika ta warstwa aplikacji przedstawia abstrakcyjny widok bazy danych. Użytkownicy końcowi nie są świadomi istnienia bazy danych poza aplikacją. Z drugiej strony warstwa bazy danych nie rozpoznaje żadnego innego użytkownika poza warstwą aplikacji. Dlatego warstwa aplikacji znajduje się pośrodku i działa jako pośrednik między użytkownikiem końcowym a bazą danych.

  • User (Presentation) Tier- Użytkownicy końcowi działają na tej warstwie i nie wiedzą nic o istnieniu bazy danych poza tą warstwą. Na tej warstwie aplikacja może udostępniać wiele widoków bazy danych. Wszystkie widoki są generowane przez aplikacje znajdujące się w warstwie aplikacji.

Architektura wielowarstwowej bazy danych jest wysoce modyfikowalna, ponieważ prawie wszystkie jej komponenty są niezależne i można je zmieniać niezależnie.

Modele danych definiują sposób modelowania logicznej struktury bazy danych. Modele danych to podstawowe jednostki do wprowadzenia abstrakcji w DBMS. Modele danych definiują sposób łączenia danych ze sobą oraz sposób ich przetwarzania i przechowywania w systemie.

Pierwszym modelem danych mogą być płaskie modele danych, w których wszystkie wykorzystywane dane mają być przechowywane na tej samej płaszczyźnie. Wcześniejsze modele danych nie były tak naukowe, przez co były podatne na wiele duplikatów i aktualizacji anomalii.

Model relacji encji

Model encji-relacji (ER) jest oparty na pojęciu bytów ze świata rzeczywistego i relacji między nimi. Podczas formułowania rzeczywistego scenariusza w modelu bazy danych model ER tworzy zestaw jednostek, zestaw relacji, atrybuty ogólne i ograniczenia.

Model ER najlepiej nadaje się do projektowania koncepcyjnego bazy danych.

Model ER jest oparty na -

  • Entitiesi ich atrybuty.

  • Relationships wśród podmiotów.

Pojęcia te wyjaśniono poniżej.

  • Entity - Jednostka w modelu ER to rzeczywista jednostka posiadająca właściwości o nazwie attributes. Każdyattribute jest definiowana przez zbiór wartości o nazwie domain. Na przykład w szkolnej bazie danych uczeń jest traktowany jako jednostka. Uczeń ma różne cechy, takie jak imię i nazwisko, wiek, klasa itp.

  • Relationship - Nazywa się logiczne powiązanie między podmiotami relationship. Relacje są mapowane z jednostkami na różne sposoby. Liczby odwzorowania określają liczbę powiązań między dwoma podmiotami.

    Mapowanie liczebności -

    • Jeden na jednego
    • jeden za dużo
    • wiele do jednego
    • wiele do wielu

Model relacyjny

Najpopularniejszym modelem danych w DBMS jest model relacyjny. Jest to model bardziej naukowy niż inne. Ten model jest oparty na logice predykatów pierwszego rzędu i definiuje tabelę jako plikn-ary relation.

Główne zalety tego modelu to -

  • Dane są przechowywane w tabelach o nazwie relations.
  • Relacje można znormalizować.
  • W znormalizowanych relacjach zapisane wartości są wartościami atomowymi.
  • Każdy wiersz w relacji zawiera unikalną wartość.
  • Każda kolumna w relacji zawiera wartości z tej samej domeny.

Schemat bazy danych

Schemat bazy danych to szkieletowa struktura reprezentująca logiczny widok całej bazy danych. Definiuje sposób organizacji danych i powiązania między nimi relacji. Formułuje wszystkie ograniczenia, które mają być zastosowane do danych.

Schemat bazy danych definiuje swoje jednostki i relacje między nimi. Zawiera opisowy szczegół bazy danych, który można przedstawić za pomocą diagramów schematów. To projektanci baz danych projektują schemat, aby pomóc programistom zrozumieć bazę danych i uczynić ją użyteczną.

Schemat bazy danych można zasadniczo podzielić na dwie kategorie -

  • Physical Database Schema - Schemat ten dotyczy faktycznego przechowywania danych i ich formy przechowywania, np. Plików, indeksów itp. Określa, w jaki sposób dane będą przechowywane w pamięci dodatkowej.

  • Logical Database Schema- Ten schemat definiuje wszystkie ograniczenia logiczne, które należy zastosować do przechowywanych danych. Definiuje tabele, widoki i ograniczenia integralności.

Instancja bazy danych

Ważne jest, abyśmy rozróżnili te dwa terminy indywidualnie. Schemat bazy danych to szkielet bazy danych. Jest zaprojektowany, gdy baza danych w ogóle nie istnieje. Po uruchomieniu bazy danych bardzo trudno jest wprowadzić w niej jakiekolwiek zmiany. Schemat bazy danych nie zawiera żadnych danych ani informacji.

Instancja bazy danych to stan operacyjnej bazy danych z danymi w dowolnym momencie. Zawiera migawkę bazy danych. Instancje bazy danych mają tendencję do zmian w czasie. DBMS zapewnia, że ​​każda jego instancja (stan) jest w prawidłowym stanie, przez skrupulatne przestrzeganie wszystkich walidacji, ograniczeń i warunków narzuconych przez projektantów bazy danych.

Jeśli system baz danych nie jest wielowarstwowy, trudno będzie wprowadzić jakiekolwiek zmiany w systemie baz danych. Jak dowiedzieliśmy się wcześniej, systemy baz danych są projektowane w wielu warstwach.

Niezależność danych

System bazy danych zwykle zawiera dużo danych oprócz danych użytkowników. Na przykład przechowuje dane o danych, znane jako metadane, w celu łatwego lokalizowania i pobierania danych. Modyfikowanie lub aktualizowanie zestawu metadanych po ich zapisaniu w bazie danych jest raczej trudne. Jednak w miarę jak DBMS się rozwija, musi z czasem ulegać zmianom, aby spełnić wymagania użytkowników. Gdyby całe dane były zależne, byłaby to żmudna i bardzo złożona praca.

Same metadane mają architekturę warstwową, więc kiedy zmieniamy dane na jednej warstwie, nie wpływa to na dane na innym poziomie. Te dane są niezależne, ale mapowane na siebie.

Logiczna niezależność danych

Dane logiczne to dane o bazie danych, czyli przechowują informacje o sposobie zarządzania danymi wewnątrz. Na przykład tabela (relacja) przechowywana w bazie danych i wszystkie jej ograniczenia zastosowane do tej relacji.

Logiczna niezależność danych to rodzaj mechanizmu, który liberalizuje się od rzeczywistych danych przechowywanych na dysku. Jeśli wprowadzimy jakieś zmiany w formacie tabeli, nie powinno to zmieniać danych znajdujących się na dysku.

Fizyczna niezależność danych

Wszystkie schematy są logiczne, a rzeczywiste dane są przechowywane na dysku w formacie bitowym. Fizyczna niezależność danych to możliwość zmiany danych fizycznych bez wpływu na schemat lub dane logiczne.

Na przykład, jeśli chcemy zmienić lub ulepszyć sam system pamięci masowej - załóżmy, że chcemy zastąpić dyski twarde SSD - nie powinno to mieć żadnego wpływu na dane logiczne lub schematy.

Model ER definiuje koncepcyjny widok bazy danych. Działa wokół rzeczywistych podmiotów i powiązań między nimi. Na poziomie widoku model ER jest uważany za dobrą opcję do projektowania baz danych.

Jednostka

Istota może być obiektem w świecie rzeczywistym, ożywionym lub nieożywionym, który można łatwo zidentyfikować. Na przykład w szkolnej bazie danych uczniowie, nauczyciele, klasy i oferowane kursy mogą być traktowane jako jednostki. Wszystkie te jednostki mają pewne atrybuty lub właściwości, które nadają im ich tożsamość.

Zestaw jednostek to zbiór podobnych typów jednostek. Zestaw jednostek może zawierać jednostki, których atrybut ma podobne wartości. Na przykład zestaw uczniów może zawierać wszystkich uczniów danej szkoły; podobnie zestaw nauczycieli może zawierać wszystkich nauczycieli danej szkoły ze wszystkich wydziałów. Zestawy jednostek nie muszą być rozłączne.

Atrybuty

Jednostki są reprezentowane poprzez swoje właściwości, tzw attributes. Wszystkie atrybuty mają wartości. Na przykład jednostka studencka może mieć jako atrybuty imię i nazwisko, klasę i wiek.

Istnieje dziedzina lub zakres wartości, które można przypisać do atrybutów. Na przykład nazwisko ucznia nie może być wartością liczbową. Musi być alfabetyczny. Wiek ucznia nie może być ujemny itp.

Typy atrybutów

  • Simple attribute- Proste atrybuty to wartości niepodzielne, których nie można dalej podzielić. Na przykład numer telefonu ucznia ma wartość atomową składającą się z 10 cyfr.

  • Composite attribute- Atrybuty złożone składają się z więcej niż jednego prostego atrybutu. Na przykład pełne imię i nazwisko ucznia może mieć imię i nazwisko.

  • Derived attribute- Atrybuty pochodne to atrybuty, które nie istnieją w fizycznej bazie danych, ale ich wartości pochodzą z innych atrybutów obecnych w bazie danych. Na przykład pensja_średnia w dziale nie powinna być zapisywana bezpośrednio w bazie danych, ale może zostać wyprowadzona. Na przykład wiek można wyprowadzić z data_of_birth.

  • Single-value attribute- Atrybuty jednowartościowe zawierają jedną wartość. Na przykład - Social_Security_Number.

  • Multi-value attribute- Atrybuty wielowartościowe mogą zawierać więcej niż jedną wartość. Na przykład osoba może mieć więcej niż jeden numer telefonu, adres e-mail itp.

Te typy atrybutów mogą łączyć się w taki sposób, jak -

  • proste atrybuty jednowartościowe
  • proste atrybuty wielowartościowe
  • złożone atrybuty jednowartościowe
  • złożone atrybuty wielowartościowe

Zestaw jednostek i klucze

Klucz to atrybut lub zbiór atrybutów, które jednoznacznie identyfikują jednostkę w zestawie jednostek.

Na przykład roll_number ucznia sprawia, że ​​można go zidentyfikować wśród uczniów.

  • Super Key - Zestaw atrybutów (jeden lub więcej), który łącznie identyfikuje jednostkę w zestawie jednostek.

  • Candidate Key- Minimalny super klucz nazywany jest kluczem kandydującym. Zestaw jednostek może mieć więcej niż jeden klucz kandydujący.

  • Primary Key - Klucz podstawowy to jeden z kluczy kandydujących wybrany przez projektanta bazy danych w celu jednoznacznej identyfikacji zestawu jednostek.

Związek

Skojarzenie między podmiotami nazywa się relacją. Na przykład pracownikworks_at wydział, student enrollsna kursie. Tutaj Works_at i Enrolls są nazywane relacjami.

Zestaw relacji

Zestaw relacji podobnego typu nazywany jest zestawem relacji. Podobnie jak byty, relacja również może mieć atrybuty. Te atrybuty nazywane sądescriptive attributes.

Stopień pokrewieństwa

Liczba podmiotów uczestniczących w relacji określa stopień relacji.

  • Binarny = stopień 2
  • Ternary = stopień 3
  • n-ary = stopień

Mapowanie kardynalności

Cardinality definiuje liczbę jednostek w jednym zestawie jednostek, które można powiązać z liczbą obiektów z innego zestawu za pośrednictwem zestawu relacji.

  • One-to-one - Jedna jednostka ze zbioru jednostek A może być powiązana co najwyżej z jedną jednostką ze zbioru jednostek B i odwrotnie.

  • One-to-many - Jedna jednostka ze zbioru jednostek A może być powiązana z więcej niż jedną jednostką ze zbioru jednostek B, jednak jednostka ze zbioru jednostek B może być powiązana co najwyżej z jedną jednostką.

  • Many-to-one - Więcej niż jeden obiekt ze zbioru podmiotów A może być powiązany z co najwyżej jednym obiektem ze zbioru podmiotów B, jednakże obiekt ze zbioru podmiotów B może być powiązany z więcej niż jednym podmiotem ze zbioru elementów A.

  • Many-to-many - Jeden podmiot z A może być powiązany z więcej niż jednym podmiotem z B i odwrotnie.

Dowiedzmy się teraz, jak model ER jest reprezentowany za pomocą diagramu ER. Dowolny obiekt, na przykład encje, atrybuty encji, zestawy relacji i atrybuty zestawów relacji, można przedstawić za pomocą diagramu ER.

Jednostka

Jednostki są reprezentowane za pomocą prostokątów. Prostokąty są nazywane za pomocą zestawu elementów, który reprezentują.

Atrybuty

Atrybuty to właściwości jednostek. Atrybuty są reprezentowane za pomocą elips. Każda elipsa reprezentuje jeden atrybut i jest bezpośrednio połączona z jego jednostką (prostokątem).

Jeśli atrybuty to composite, są dalej podzielone w strukturę podobną do drzewa. Każdy węzeł jest następnie połączony z jego atrybutem. Oznacza to, że atrybuty złożone są reprezentowane przez elipsy połączone elipsą.

Multivalued atrybuty są przedstawione podwójną elipsą.

Derived atrybuty są oznaczone kreskowaną elipsą.

Związek

Relacje są reprezentowane przez pudełko w kształcie rombu. Nazwa związku jest wpisana w romboidalnej ramce. Wszystkie podmioty (prostokąty) uczestniczące w relacji są z nią połączone linią.

Relacja binarna i liczność

Relacja, w której uczestniczą dwie jednostki, nazywana jest a binary relationship. Liczność to liczba wystąpień bytu z relacji, która może być powiązana z relacją.

  • One-to-one- Gdy tylko jedna instancja podmiotu jest powiązana z relacją, jest oznaczana jako „1: 1”. Poniższy obraz pokazuje, że tylko jedno wystąpienie każdej jednostki powinno być skojarzone z relacją. Przedstawia relację jeden do jednego.

  • One-to-many- Gdy więcej niż jedna instancja podmiotu jest powiązana z relacją, jest oznaczana jako „1: N”. Poniższy obraz pokazuje, że tylko jedno wystąpienie encji po lewej stronie i więcej niż jedno wystąpienie encji po prawej stronie może być skojarzone z relacją. Przedstawia relację jeden do wielu.

  • Many-to-one- Jeśli z relacją skojarzona jest więcej niż jedna instancja podmiotu, jest ona oznaczona jako „N: 1”. Poniższy obraz pokazuje, że więcej niż jedno wystąpienie jednostki po lewej stronie i tylko jedno wystąpienie jednostki po prawej stronie może być skojarzone z relacją. Przedstawia relację wiele do jednego.

  • Many-to-many- Poniższy obraz pokazuje, że z relacją można powiązać więcej niż jedną instancję jednostki po lewej stronie i więcej niż jedną instancję jednostki po prawej stronie. Przedstawia relację wiele do wielu.

Ograniczenia uczestnictwa

  • Total Participation- Każdy podmiot jest zaangażowany w związek. Całkowity udział jest reprezentowany przez podwójne linie.

  • Partial participation- Nie wszystkie podmioty są zaangażowane w związek. Częściowe uczestnictwo jest reprezentowane przez pojedyncze linie.

Dowiedzmy się teraz, jak model ER jest reprezentowany za pomocą diagramu ER. Dowolny obiekt, na przykład encje, atrybuty encji, zestawy relacji i atrybuty zestawów relacji, można przedstawić za pomocą diagramu ER.

Jednostka

Jednostki są reprezentowane za pomocą prostokątów. Prostokąty są nazywane za pomocą zestawu elementów, który reprezentują.

Atrybuty

Atrybuty to właściwości jednostek. Atrybuty są reprezentowane za pomocą elips. Każda elipsa reprezentuje jeden atrybut i jest bezpośrednio połączona z jego jednostką (prostokątem).

Jeśli atrybuty to composite, są dalej podzielone w strukturę podobną do drzewa. Każdy węzeł jest następnie połączony z jego atrybutem. Oznacza to, że atrybuty złożone są reprezentowane przez elipsy połączone elipsą.

Multivalued atrybuty są przedstawione podwójną elipsą.

Derived atrybuty są oznaczone kreskowaną elipsą.

Związek

Relacje są reprezentowane przez pudełko w kształcie rombu. Nazwa związku jest wpisana w romboidalnej ramce. Wszystkie podmioty (prostokąty) uczestniczące w relacji są z nią połączone linią.

Relacja binarna i liczność

Relacja, w której uczestniczą dwie jednostki, nazywana jest a binary relationship. Liczność to liczba wystąpień bytu z relacji, która może być powiązana z relacją.

  • One-to-one- Gdy tylko jedna instancja podmiotu jest powiązana z relacją, jest oznaczana jako „1: 1”. Poniższy obraz pokazuje, że tylko jedno wystąpienie każdej jednostki powinno być skojarzone z relacją. Przedstawia relację jeden do jednego.

  • One-to-many- Gdy więcej niż jedna instancja podmiotu jest powiązana z relacją, jest oznaczana jako „1: N”. Poniższy obraz pokazuje, że tylko jedno wystąpienie encji po lewej stronie i więcej niż jedno wystąpienie encji po prawej stronie może być skojarzone z relacją. Przedstawia relację jeden do wielu.

  • Many-to-one- Jeśli z relacją skojarzona jest więcej niż jedna instancja podmiotu, jest ona oznaczona jako „N: 1”. Poniższy obraz pokazuje, że więcej niż jedno wystąpienie jednostki po lewej stronie i tylko jedno wystąpienie jednostki po prawej stronie może być skojarzone z relacją. Przedstawia relację wiele do jednego.

  • Many-to-many- Poniższy obraz pokazuje, że z relacją można powiązać więcej niż jedną instancję jednostki po lewej stronie i więcej niż jedną instancję jednostki po prawej stronie. Przedstawia relację wiele do wielu.

Ograniczenia uczestnictwa

  • Total Participation- Każdy podmiot jest zaangażowany w związek. Całkowity udział jest reprezentowany przez podwójne linie.

  • Partial participation- Nie wszystkie podmioty są zaangażowane w związek. Częściowe uczestnictwo jest reprezentowane przez pojedyncze linie.

Model ER ma moc wyrażania jednostek bazy danych w koncepcyjny, hierarchiczny sposób. Gdy hierarchia idzie w górę, uogólnia widok bytów, a gdy wchodzimy w głąb hierarchii, daje nam szczegóły każdej zawartej w niej encji.

Wznoszenie się w tej strukturze nazywa się generalization, gdzie jednostki są łączone razem, aby przedstawić bardziej uogólniony pogląd. Na przykład konkretnego ucznia o imieniu Mira można uogólnić wraz ze wszystkimi studentami. Podmiotem jest student, a ponadto student to osoba. Nazywa się odwrotnąspecialization gdzie osoba jest studentem, a tym uczniem jest Mira.

Uogólnienie

Jak wspomniano powyżej, proces uogólniania bytów, w którym byty uogólnione zawierają właściwości wszystkich bytów uogólnionych, nazywa się uogólnieniem. W uogólnieniu szereg bytów łączy się w jedną uogólnioną całość na podstawie ich podobnych cech. Na przykład gołąb, wróbel domowy, wrona i gołąb można uogólnić jako ptaki.

Specjalizacja

Specjalizacja jest przeciwieństwem uogólnienia. W specjalizacji grupa podmiotów jest podzielona na podgrupy w oparciu o ich charakterystykę. Weźmy na przykład grupę „Osoba”. Osoba ma imię i nazwisko, datę urodzenia, płeć, itd. Te właściwości są wspólne dla wszystkich osób, istot ludzkich. Jednak w firmie osoby można zidentyfikować jako pracownika, pracodawcę, klienta lub dostawcę, w zależności od roli, jaką pełnią w firmie.

Podobnie w szkolnej bazie danych osoby mogą być wyspecjalizowane jako nauczyciele, uczniowie lub pracownicy, w zależności od roli, jaką pełnią w szkole jako podmioty.

Dziedzictwo

Wykorzystujemy wszystkie powyższe cechy ER-Model do tworzenia klas obiektów w programowaniu obiektowym. Szczegóły podmiotów są zazwyczaj ukryte przed użytkownikiem; ten proces znany jakoabstraction.

Dziedziczenie jest ważną cechą Generalizacji i Specjalizacji. Pozwala jednostkom niższego poziomu na dziedziczenie atrybutów jednostek wyższego poziomu.

Na przykład atrybuty klasy Person, takie jak imię i nazwisko, wiek i płeć, mogą być dziedziczone przez jednostki niższego poziomu, takie jak Uczeń lub Nauczyciel.

Dr Edgar F. Codd po szeroko zakrojonych badaniach nad relacyjnym modelem systemów baz danych wymyślił dwanaście własnych reguł, którym według niego baza danych musi być przestrzegana, aby można ją było uznać za prawdziwie relacyjną bazę danych.

Reguły te można zastosować w każdym systemie baz danych, który zarządza przechowywanymi danymi, korzystając wyłącznie z ich możliwości relacyjnych. Jest to podstawowa reguła, która stanowi podstawę wszystkich innych reguł.

Zasada 1: Zasada informacyjna

Dane przechowywane w bazie danych, mogą to być dane użytkownika lub metadane, muszą być wartością jakiejś komórki tabeli. Wszystko w bazie danych musi być przechowywane w formacie tabeli.

Reguła 2: Zasada gwarantowanego dostępu

Gwarantuje się, że każdy pojedynczy element danych (wartość) będzie dostępny logicznie za pomocą kombinacji nazwy tabeli, klucza podstawowego (wartość wiersza) i nazwy atrybutu (wartość kolumny). Żadne inne środki, takie jak wskaźniki, nie mogą być używane do uzyskiwania dostępu do danych.

Zasada 3: Systematyczne traktowanie wartości NULL

Wartości NULL w bazie danych należy traktować systematycznie i jednakowo. Jest to bardzo ważna zasada, ponieważ wartość NULL można interpretować jako jedną z następujących - brakuje danych, nie są znane lub nie mają zastosowania.

Zasada 4: aktywny katalog online

Opis struktury całej bazy danych musi być przechowywany w katalogu online, znanym jako data dictionary, do którego mają dostęp uprawnieni użytkownicy. Użytkownicy mogą używać tego samego języka zapytań, aby uzyskać dostęp do katalogu, którego używają do uzyskiwania dostępu do samej bazy danych.

Zasada 5: Kompleksowa reguła języków danych

Dostęp do bazy danych można uzyskać tylko za pomocą języka o składni liniowej, który obsługuje definicję danych, manipulację danymi i operacje zarządzania transakcjami. Ten język może być używany bezpośrednio lub za pomocą jakiejś aplikacji. Jeśli baza danych umożliwia dostęp do danych bez pomocy tego języka, jest to traktowane jako naruszenie.

Reguła 6: Wyświetl aktualizację reguły

Wszystkie widoki bazy danych, które teoretycznie mogą być aktualizowane, muszą być również aktualizowane przez system.

Reguła 7: Wstawianie, aktualizowanie i usuwanie reguły wysokiego poziomu

Baza danych musi obsługiwać wstawianie, aktualizowanie i usuwanie wysokiego poziomu. Nie może to być ograniczone do pojedynczego wiersza, to znaczy musi również obsługiwać operacje sumowania, przecinania i minusy w celu uzyskania zestawów rekordów danych.

Zasada 8: fizyczna niezależność danych

Dane przechowywane w bazie danych muszą być niezależne od aplikacji, które mają dostęp do bazy danych. Żadna zmiana fizycznej struktury bazy danych nie może mieć żadnego wpływu na sposób uzyskiwania dostępu do danych przez aplikacje zewnętrzne.

Zasada 9: Logiczna niezależność danych

Dane logiczne w bazie danych muszą być niezależne od widoku użytkownika (aplikacji). Żadna zmiana danych logicznych nie może wpływać na aplikacje z nich korzystające. Na przykład, jeśli dwie tabele zostaną scalone lub jedna zostanie podzielona na dwie różne tabele, nie powinno to mieć wpływu ani zmian na aplikację użytkownika. To jedna z najtrudniejszych do zastosowania reguł.

Zasada 10: Niezależność od uczciwości

Baza danych musi być niezależna od aplikacji, która z niej korzysta. Wszystkie jego ograniczenia integralności można niezależnie modyfikować bez konieczności dokonywania jakichkolwiek zmian w aplikacji. Ta reguła uniezależnia bazę danych od aplikacji frontonu i jej interfejsu.

Zasada 11: Niezależność dystrybucji

Użytkownik końcowy nie może widzieć, że dane są rozproszone w różnych lokalizacjach. Użytkownicy powinni zawsze odnieść wrażenie, że dane znajdują się tylko w jednej witrynie. Reguła ta została uznana za podstawę systemów rozproszonych baz danych.

Reguła 12: Reguła zakazu wywrotu

Jeśli system ma interfejs zapewniający dostęp do rekordów niskiego poziomu, to interfejs nie może mieć możliwości obalenia systemu i ominięcia ograniczeń bezpieczeństwa i integralności.

Relacyjny model danych to podstawowy model danych, który jest szeroko stosowany na całym świecie do przechowywania i przetwarzania danych. Ten model jest prosty i ma wszystkie właściwości i możliwości wymagane do przetwarzania danych z wydajnością przechowywania.

Koncepcje

Tables- W relacyjnym modelu danych relacje są zapisywane w formacie tabel. Ten format przechowuje relacje między podmiotami. Tabela zawiera wiersze i kolumny, gdzie wiersze reprezentują rekordy, a kolumny reprezentują atrybuty.

Tuple - Pojedynczy wiersz tabeli, który zawiera pojedynczy rekord dla tej relacji, nazywany jest krotką.

Relation instance- Skończony zestaw krotek w systemie relacyjnej bazy danych reprezentuje instancję relacji. Instancje relacji nie mają zduplikowanych krotek.

Relation schema - Schemat relacji opisuje nazwę relacji (nazwę tabeli), atrybuty i ich nazwy.

Relation key - Każdy wiersz ma jeden lub więcej atrybutów, znanych jako klucz relacji, które mogą jednoznacznie identyfikować wiersz w relacji (tabeli).

Attribute domain - Każdy atrybut ma wstępnie zdefiniowany zakres wartości, znany jako domena atrybutów.

Ograniczenia

Każda relacja ma pewne warunki, które muszą być spełnione, aby była prawidłowa. Te warunki to tzwRelational Integrity Constraints. Istnieją trzy główne ograniczenia integralności -

  • Kluczowe ograniczenia
  • Ograniczenia domeny
  • Więzy więzów integralności

Kluczowe ograniczenia

W relacji musi istnieć co najmniej jeden minimalny podzbiór atrybutów, który może jednoznacznie identyfikować krotkę. Ten minimalny podzbiór atrybutów jest nazywanykeydla tej relacji. Jeśli istnieje więcej niż jeden taki minimalny podzestaw, są one nazywanecandidate keys.

Kluczowe ograniczenia wymuszają to -

  • w relacji z atrybutem klucza żadne dwie krotki nie mogą mieć identycznych wartości dla atrybutów klucza.

  • atrybut klucza nie może mieć wartości NULL.

Kluczowe ograniczenia są również nazywane ograniczeniami encji.

Ograniczenia domeny

Atrybuty mają określone wartości w scenariuszu w świecie rzeczywistym. Na przykład wiek może być tylko dodatnią liczbą całkowitą. Próbowano zastosować te same ograniczenia w atrybutach relacji. Każdy atrybut musi mieć określony zakres wartości. Na przykład wiek nie może być mniejszy niż zero, a numery telefonów nie mogą zawierać cyfry spoza 0-9.

Więzy integralności referencyjnej

Więzy dotyczące integralności referencyjnej działają na koncepcji kluczy obcych. Klucz obcy to kluczowy atrybut relacji, do którego można się odwołać w innej relacji.

Więzy integralności referencyjnej stwierdzają, że jeśli relacja odnosi się do kluczowego atrybutu innej lub tej samej relacji, to ten kluczowy element musi istnieć.

Oczekuje się, że systemy relacyjnych baz danych będą wyposażone w język zapytań, który może pomóc użytkownikom w wykonywaniu zapytań dotyczących instancji bazy danych. Istnieją dwa rodzaje języków zapytań - algebra relacyjna i rachunek relacyjny.

Algebra relacyjna

Algebra relacyjna jest proceduralnym językiem zapytań, który przyjmuje instancje relacji jako dane wejściowe i dostarcza instancje relacji jako dane wyjściowe. Używa operatorów do wykonywania zapytań. Operator może być jednym z nichunary lub binary. Przyjmują relacje jako wkład i dają relacje jako wynik. Algebra relacyjna jest wykonywana rekurencyjnie na relacji, a wyniki pośrednie są również uważane za relacje.

Podstawowe operacje algebry relacyjnej są następujące:

  • Select
  • Project
  • Union
  • Ustaw inny
  • Iloczyn kartezjański
  • Rename

Omówimy wszystkie te operacje w kolejnych sekcjach.

Wybierz operację (σ)

Wybiera krotki, które spełniają zadany predykat z relacji.

Notation- σ p (r)

Gdzie σ oznacza predykat selekcji i roznacza relację. p jest formułą logiki przyimkowej, która może używać łączników, takich jakand, or, i not. Te terminy mogą używać operatorów relacyjnych, takich jak - =, ≠, ≥, <,>, ≤.

For example -

σsubject="database"(Books)

Output - Wybiera krotki z książek, których tematem jest „baza danych”.

σsubject="database" and price="450"(Books)

Output - Wybiera krotki z książek, których tematem jest „baza danych”, a „cena” to 450.

σsubject="database" and price < "450" or year > "2010"(Books)

Output - Wybiera krotki z książek, których tematem jest „baza danych”, a „cena” to 450, lub z książek wydanych po 2010 roku.

Działanie projektu (∏)

Projektuje kolumny, które spełniają dany predykat.

Notacja - ∏ A 1 , A 2 , A n (r)

Gdzie A 1 , A 2 , A n to nazwy atrybutów relacjir.

Zduplikowane wiersze są automatycznie eliminowane, ponieważ relacja jest zbiorem.

For example -

subject, author (Books)

Wybiera i projektuje kolumny nazwane jako temat i autor z relacji Książki.

Operacja Unii (∪)

Wykonuje binarny związek między dwiema podanymi relacjami i jest zdefiniowany jako -

r ∪ s = { t | t ∈ r or t ∈ s}

Notation - r U s

Gdzie r i s są albo relacjami bazy danych, albo zestawem wyników relacji (relacja tymczasowa).

Aby operacja unii była ważna, muszą spełniać następujące warunki:

  • r, i s musi mieć taką samą liczbę atrybutów.
  • Domeny atrybutów muszą być zgodne.
  • Zduplikowane krotki są automatycznie eliminowane.

author (Books) ∪ ∏ author (Articles)

Output - Wyświetla nazwiska autorów, którzy napisali książkę lub artykuł lub jedno i drugie.

Ustaw różnicę (-)

Wynikiem operacji na ustawieniach różnicy są krotki, które są obecne w jednej relacji, ale nie występują w drugiej.

Notation - r - s

Znajduje wszystkie krotki, które są obecne w r ale nie w s.

author (Books) − ∏ author (Articles)

Output - Zawiera nazwiska autorów, którzy napisali książki, ale nie artykuły.

Iloczyn kartezjański (Χ)

Łączy informacje o dwóch różnych relacjach w jedną.

Notation - r Χ s

Gdzie r i s są relacjami, a ich wynik będzie zdefiniowany jako -

r Χ s = {qt | q ∈ r it ∈ s}

author = 'tutorialspoint'(Books Χ Articles)

Output - Daje relację, która pokazuje wszystkie książki i artykuły napisane przez tutorialspoint.

Zmiana nazwy operacji (ρ)

Rezultatem algebry relacyjnej są również relacje, ale bez nazwy. Operacja rename pozwala nam zmienić nazwę relacji wyjściowej. Operacja „rename” jest oznaczona małą grecką literąrho ρ .

Notation- ρ x (E)

Gdzie wynik wyrażenia E jest zapisany pod nazwą x.

Dodatkowe operacje to -

  • Ustaw przecięcie
  • Assignment
  • Połączenie naturalne

Rachunek relacyjny

W przeciwieństwie do algebry relacyjnej, rachunek relacyjny jest językiem zapytań nieproceduralnych, to znaczy mówi, co należy zrobić, ale nigdy nie wyjaśnia, jak to zrobić.

Rachunek relacyjny istnieje w dwóch formach -

Rachunek relacyjny krotki (TRC)

Filtrowanie zakresów zmiennych po krotkach

Notation- {T | Stan: schorzenie}

Zwraca wszystkie krotki T, które spełniają warunek.

For example -

{ T.name |  Author(T) AND T.article = 'database' }

Output - Zwraca krotki z 'imieniem' od autora, który napisał artykuł o 'bazie danych'.

TRC można określić ilościowo. Możemy użyć egzystencjalnych (∃) i uniwersalnych kwantyfikatorów (∀).

For example -

{ R| ∃T   ∈ Authors(T.article='database' AND R.name=T.name)}

Output - Powyższe zapytanie da taki sam wynik jak poprzednie.

Domain Relational Calculus (DRK)

W DRC zmienna filtrująca używa domeny atrybutów zamiast całych wartości krotek (jak to zrobiono w TRC, wspomniano powyżej).

Notation -

{a 1 , a 2 , a 3 , ..., a n | P (a 1 , a 2 , a 3 , ..., a n )}

Gdzie a1, a2 to atrybuty, a P oznacza formuły zbudowane na podstawie atrybutów wewnętrznych.

For example -

{< article, page, subject > | ∈ TutorialsPoint ∧ subject = 'database'}

Output - Poddaje artykuł, stronę i temat z relacji TutorialsPoint, gdzie tematem jest baza danych.

Podobnie jak TRC, DRC można również zapisać przy użyciu egzystencjalnych i uniwersalnych kwantyfikatorów. DRK obejmuje również operatorów relacyjnych.

Siła wyrażenia rachunku relacji krotek i rachunku relacji domeny jest równoważna algebrze relacyjnej.

Model ER, po konceptualizacji w postaci diagramów, daje dobry przegląd relacji między podmiotami, który jest łatwiejszy do zrozumienia. Diagramy ER można odwzorować na schemat relacyjny, to znaczy za pomocą diagramu ER można stworzyć schemat relacyjny. Nie możemy zaimportować wszystkich ograniczeń ER do modelu relacyjnego, ale można wygenerować przybliżony schemat.

Dostępnych jest kilka procesów i algorytmów służących do przekształcania diagramów ER w schematy relacyjne. Część z nich jest zautomatyzowana, a część ręczna. W tym miejscu możemy skupić się na odwzorowaniu zawartości diagramu na podstawy relacji.

Diagramy ER składają się głównie z -

  • Jednostka i jej atrybuty
  • Relacja, czyli skojarzenie między podmiotami.

Element mapujący

Jednostka to obiekt świata rzeczywistego z pewnymi atrybutami.

Proces mapowania (algorytm)

  • Utwórz tabelę dla każdej jednostki.
  • Atrybuty jednostki powinny stać się polami tabel z odpowiednimi typami danych.
  • Zadeklaruj klucz podstawowy.

Relacja mapowania

Relacja to skojarzenie między podmiotami.

Proces mapowania

  • Utwórz tabelę relacji.
  • Dodaj klucze główne wszystkich uczestniczących jednostek jako pola tabeli z odpowiadającymi im typami danych.
  • Jeśli relacja ma jakiś atrybut, dodaj każdy atrybut jako pole tabeli.
  • Zadeklaruj klucz podstawowy składający się ze wszystkich kluczy podstawowych uczestniczących jednostek.
  • Zadeklaruj wszystkie ograniczenia klucza obcego.

Mapowanie słabych zestawów jednostek

Słaby zestaw jednostek to taki, który nie ma skojarzonego z nim żadnego klucza podstawowego.

Proces mapowania

  • Utwórz tabelę dla słabego zestawu jednostek.
  • Dodaj wszystkie jego atrybuty do tabeli jako pole.
  • Dodaj klucz podstawowy identyfikującego zestawu jednostek.
  • Zadeklaruj wszystkie ograniczenia klucza obcego.

Odwzorowywanie jednostek hierarchicznych

Specjalizacja lub uogólnienie ER ma postać hierarchicznych zbiorów jednostek.

Proces mapowania

  • Utwórz tabele dla wszystkich jednostek wyższego poziomu.

  • Utwórz tabele dla encji niższego poziomu.

  • Dodaj klucze podstawowe jednostek wyższego poziomu w tabeli jednostek niższego poziomu.

  • W tabelach niższego poziomu dodaj wszystkie inne atrybuty jednostek niższego poziomu.

  • Zadeklaruj klucz podstawowy tabeli wyższego poziomu i klucz podstawowy tabeli niższego poziomu.

  • Zadeklaruj ograniczenia klucza obcego.

SQL to język programowania dla relacyjnych baz danych. Został zaprojektowany na podstawie algebry relacyjnej i rachunku relacyjnego krotki. SQL jest dostarczany jako pakiet ze wszystkimi głównymi dystrybucjami RDBMS.

SQL obejmuje języki definicji i manipulacji danymi. Korzystając z właściwości definicji danych SQL, można projektować i modyfikować schemat bazy danych, podczas gdy właściwości manipulacji danymi umożliwiają SQL przechowywanie i pobieranie danych z bazy danych.

Język definicji danych

SQL używa następującego zestawu poleceń do zdefiniowania schematu bazy danych -

STWÓRZ

Tworzy nowe bazy danych, tabele i widoki z RDBMS.

For example -

Create database tutorialspoint;
Create table article;
Create view for_students;

UPUSZCZAĆ

Zrzuca polecenia, widoki, tabele i bazy danych z RDBMS.

For example-

Drop object_type object_name;
Drop database tutorialspoint;
Drop table article;
Drop view for_students;

ZMIENIAĆ

Modyfikuje schemat bazy danych.

Alter object_type object_name parameters;

For example-

Alter table article add subject varchar;

To polecenie dodaje atrybut w relacji article z imieniem subject typu string.

Język manipulacji danymi

SQL jest wyposażony w język manipulacji danymi (DML). DML modyfikuje instancję bazy danych, wstawiając, aktualizując i usuwając jej dane. DML jest odpowiedzialny za wszelkie modyfikacje danych formularzy w bazie danych. SQL zawiera następujący zestaw poleceń w sekcji DML -

  • SELECT/FROM/WHERE
  • WSTAW DO / WARTOŚCI
  • UPDATE/SET/WHERE
  • USUŃ Z / GDZIE

Te podstawowe konstrukcje umożliwiają programistom i użytkownikom baz danych wprowadzanie danych i informacji do bazy danych oraz wydajne ich pobieranie przy użyciu wielu opcji filtrów.

WYBIERZ / Z / GDZIE

  • SELECT- Jest to jedno z podstawowych poleceń zapytania SQL. Jest to podobne do operacji rzutowania w algebrze relacyjnej. Wybiera atrybuty na podstawie warunku opisanego w klauzuli WHERE.

  • FROM- Ta klauzula przyjmuje nazwę relacji jako argument, z którego mają być wybierane / rzutowane atrybuty. W przypadku podania więcej niż jednej nazwy relacji klauzula ta odpowiada iloczynowi kartezjańskiemu.

  • WHERE - Ta klauzula definiuje predykat lub warunki, które muszą być zgodne, aby kwalifikować atrybuty do projekcji.

For example -

Select author_name
From book_author
Where age > 50;

To polecenie zwróci nazwiska autorów z relacji book_author których wiek przekracza 50 lat.

WSTAW DO / WARTOŚCI

Polecenie to służy do wstawiania wartości do wierszy tabeli (relacji).

Syntax-

INSERT INTO table (column1 [, column2, column3 ... ]) VALUES (value1 [, value2, value3 ... ])

Lub

INSERT INTO table VALUES (value1, [value2, ... ])

For example -

INSERT INTO tutorialspoint (Author, Subject) VALUES ("anonymous", "computers");

AKTUALIZUJ / USTAW / GDZIE

To polecenie służy do aktualizacji lub modyfikacji wartości kolumn w tabeli (relacji).

Syntax -

UPDATE table_name SET column_name = value [, column_name = value ...] [WHERE condition]

For example -

UPDATE tutorialspoint SET Author="webmaster" WHERE Author="anonymous";

USUŃ / Z / GDZIE

To polecenie służy do usuwania jednego lub więcej wierszy z tabeli (relacji).

Syntax -

DELETE FROM table_name [WHERE condition];

For example -

DELETE FROM tutorialspoints
   WHERE Author="unknown";

Zależność funkcjonalna

Zależność funkcjonalna (FD) to zbiór ograniczeń między dwoma atrybutami w relacji. Zależność funkcjonalna mówi, że jeśli dwie krotki mają takie same wartości dla atrybutów A1, A2, ..., An, to te dwie krotki muszą mieć te same wartości dla atrybutów B1, B2, ..., Bn.

Zależność funkcjonalną reprezentuje znak strzałki (→), czyli X → Y, gdzie X funkcjonalnie określa Y. Atrybuty po lewej stronie określają wartości atrybutów po prawej stronie.

Aksjomaty Armstronga

Jeśli F jest zbiorem zależności funkcjonalnych, to zamknięcie F, oznaczone jako F + , jest zbiorem wszystkich zależności funkcjonalnych logicznie implikowanych przez Aksjomaty F. Armstronga są zbiorem reguł, które stosowane wielokrotnie powodują zamknięcie zależności funkcjonalnych .

  • Reflexive rule - Jeśli alfa jest zbiorem atrybutów, a beta to_podset_ alfa, to alfa zachowuje beta.

  • Augmentation rule- Jeśli a → b trzyma się, a y ma ustawiony atrybut, to ay → by również trzyma. To znaczy dodawanie atrybutów w zależnościach, nie zmienia podstawowych zależności.

  • Transitivity rule- To samo, co reguła przechodnia w algebrze, jeśli a → b trzyma się i b → c trzyma, to a → c również zachowuje. a → b jest wywoływane jako funkcja, która określa b.

Trywialna zależność funkcjonalna

  • Trivial- Jeśli zachodzi zależność funkcjonalna (FD) X → Y, gdzie Y jest podzbiorem X, wówczas nazywa się to trywialnym FD. Trywialne FD zawsze się trzymają.

  • Non-trivial - Jeśli zachodzi FD X → Y, gdzie Y nie jest podzbiorem X, wówczas nazywa się to nietrywialnym FD.

  • Completely non-trivial - Jeśli FD X → Y zachodzi, gdzie x przecina Y = Φ, mówi się, że jest to całkowicie nietrywialne FD.

Normalizacja

Jeśli projekt bazy danych nie jest doskonały, może zawierać anomalie, które są jak zły sen dla każdego administratora bazy danych. Zarządzanie bazą danych z anomaliami jest prawie niemożliwe.

  • Update anomalies- Jeśli elementy danych są rozproszone i nie są ze sobą odpowiednio połączone, może to prowadzić do dziwnych sytuacji. Na przykład, gdy próbujemy zaktualizować jeden element danych, mając jego kopie rozrzucone w kilku miejscach, kilka wystąpień zostanie poprawnie zaktualizowanych, podczas gdy kilka innych pozostawi stare wartości. Takie instancje pozostawiają bazę danych w niespójnym stanie.

  • Deletion anomalies - Próbowaliśmy usunąć rekord, ale jego części nie zostały usunięte z powodu nieświadomości, dane są również zapisywane gdzie indziej.

  • Insert anomalies - Próbowaliśmy wstawić dane do rekordu, który w ogóle nie istnieje.

Normalizacja to metoda usuwania wszystkich tych anomalii i doprowadzenia bazy danych do spójnego stanu.

Pierwsza normalna forma

Pierwsza postać normalna jest zdefiniowana w samej definicji relacji (tabel). Ta reguła definiuje, że wszystkie atrybuty w relacji muszą mieć domeny atomowe. Wartości w dziedzinie atomowej są niepodzielnymi jednostkami.

Ponownie układamy relację (tabelę) jak poniżej, aby przekonwertować ją na pierwszą postać normalną.

Każdy atrybut musi zawierać tylko jedną wartość z jego wstępnie zdefiniowanej domeny.

Druga postać normalna

Zanim dowiemy się o drugiej normalnej formie, musimy zrozumieć następujące kwestie -

  • Prime attribute - Atrybut, który jest częścią klucza kandydującego, nazywany jest atrybutem głównym.

  • Non-prime attribute - Atrybut, który nie jest częścią klucza pierwszego, jest nazywany atrybutem innym niż pierwszy.

Jeśli postępujemy zgodnie z drugą postacią normalną, każdy atrybut inny niż pierwszy powinien być w pełni funkcjonalnie zależny od atrybutu klucza głównego. To znaczy, jeśli X → A zachodzi, to nie powinno być żadnego właściwego podzbioru Y z X, dla którego Y → A również jest prawdziwe.

Widzimy tutaj w relacji Student_Project, że atrybuty klucza głównego to Stu_ID i Proj_ID. Zgodnie z regułą atrybuty niebędące kluczami, tj. Stu_Name i Proj_Name, muszą być zależne od obu, a nie od żadnego z atrybutów klucza głównego indywidualnie. Ale okazuje się, że Stu_Name można zidentyfikować za pomocą Stu_ID, a Proj_Name można zidentyfikować niezależnie przez Proj_ID. To się nazywapartial dependency, co nie jest dozwolone w Second Normal Form.

Zerwaliśmy relację na dwie części, jak pokazano na powyższym obrazku. Nie ma więc częściowej zależności.

Trzecia postać normalna

Aby relacja miała trzecią normalną formę, musi być w drugiej normalnej formie, a poniższe muszą spełniać -

  • Żaden atrybut inny niż główny nie jest przejściowo zależny od atrybutu klucza głównego.
  • Dla każdej nietrywialnej zależności funkcjonalnej X → A, to albo -
      X to superklucz lub
    • A jest atrybutem głównym.

    Odkrywamy, że w powyższej relacji Student_detail, Stu_ID jest kluczem i jedynym atrybutem klucza głównego. Odkrywamy, że City można zidentyfikować za pomocą Stu_ID, a także samego Zip. Ani Zip nie jest superkluczem, ani City nie jest głównym atrybutem. Dodatkowo Stu_ID → Zip → City, więc istniejetransitive dependency.

    Aby sprowadzić tę relację do trzeciej postaci normalnej, dzielimy relację na dwie relacje w następujący sposób:

    Postać normalna Boyce'a-Codda

    Postać normalna Boyce'a-Codda (BCNF) jest rozszerzeniem trzeciej postaci normalnej na ścisłych warunkach. BCNF stwierdza, że ​​-

    • Dla każdej nietrywialnej zależności funkcjonalnej X → A, X musi być superkluczem.

    Na powyższym obrazku Stu_ID jest super-kluczem w relacji Student_Detail, a Zip jest superkluczem w relacji ZipCodes. Więc,

    Stu_ID → Stu_Name, Zip

    i

    Kod pocztowy → Miasto

    Co potwierdza, że ​​obie relacje są w BCNF.

    Rozumiemy korzyści płynące z przyjęcia iloczynu kartezjańskiego dwóch relacji, który daje nam wszystkie możliwe krotki, które są ze sobą sparowane. Ale w niektórych przypadkach może nie być wykonalne dla nas przyjęcie iloczynu kartezjańskiego, w którym napotykamy ogromne relacje z tysiącami krotek mających znaczną liczbę atrybutów.

    Jointo połączenie produktu kartezjańskiego, po którym następuje proces selekcji. Operacja Join łączy w pary dwie krotki z różnych relacji, wtedy i tylko wtedy, gdy dany warunek łączenia jest spełniony.

    W następnych sekcjach pokrótce opiszemy różne typy złączeń.

    Theta (θ) Dołącz

    Łączenie theta łączy krotki z różnych relacji, pod warunkiem, że spełniają warunek theta. Warunek łączenia jest oznaczony symbolemθ.

    Notacja

    R1 ⋈θ R2

    R1 i R2 to relacje mające atrybuty (A1, A2, .., An) i (B1, B2, .., Bn) takie, że atrybuty nie mają ze sobą nic wspólnego, czyli R1 ∩ R2 = Φ.

    Łączenie theta może używać wszystkich rodzajów operatorów porównania.

    Student
    SID Nazwa Std
    101 Alex 10
    102 Maria 11
    Tematy
    Klasa Przedmiot
    10 Math
    10 język angielski
    11 Muzyka
    11 Sporty

    Student_Detail =

    STUDENT Student.Std = Subject.Class SUBJECT

    Student_detail
    SID Nazwa Std Klasa Przedmiot
    101 Alex 10 10 Math
    101 Alex 10 10 język angielski
    102 Maria 11 11 Muzyka
    102 Maria 11 11 Sporty

    Equijoin

    Gdy dołączenie Theta używa tylko equalityoperator porównania, mówi się, że jest to equijoin. Powyższy przykład odpowiada equijoin.

    Połączenie naturalne ( )

    Łączenie naturalne nie używa żadnego operatora porównania. Nie łączy się w sposób, w jaki robi to produkt kartezjański. Możemy wykonać sprzężenie naturalne tylko wtedy, gdy istnieje co najmniej jeden wspólny atrybut, który istnieje między dwiema relacjami. Ponadto atrybuty muszą mieć tę samą nazwę i domenę.

    Sprzężenie naturalne działa na te pasujące atrybuty, w których wartości atrybutów w obu relacjach są takie same.

    Kursy
    CID Kierunek Dept
    CS01 Baza danych CS
    ME01 Mechanika MNIE
    EE01 Elektronika EE
    Taczki
    Dept Głowa
    CS Alex
    MNIE Maya
    EE Mira
    Kursy ⋈ HoD
    Dept CID Kierunek Głowa
    CS CS01 Baza danych Alex
    MNIE ME01 Mechanika Maya
    EE EE01 Elektronika Mira

    Połączenia zewnętrzne

    Połączenia Theta, Equijoin i Natural Join nazywane są połączeniami wewnętrznymi. Sprzężenie wewnętrzne zawiera tylko te krotki z pasującymi atrybutami, a reszta jest odrzucana w wynikowej relacji. Dlatego musimy użyć zewnętrznych sprzężeń, aby uwzględnić wszystkie krotki z uczestniczących relacji w wynikowej relacji. Istnieją trzy rodzaje połączeń zewnętrznych - lewe sprzężenie zewnętrzne, prawe sprzężenie zewnętrzne i pełne sprzężenie zewnętrzne.

    Lewe połączenie zewnętrzne (R
    S)

    Wszystkie krotki z relacji Left, R, są zawarte w wynikowej relacji. Jeśli istnieją krotki w R bez żadnej pasującej krotki w prawej relacji S, wówczas S-atrybuty wynikowej relacji mają wartość NULL.

    Lewo
    ZA b
    100 Baza danych
    101 Mechanika
    102 Elektronika
    Dobrze
    ZA b
    100 Alex
    102 Maya
    104 Mira
    Kursy
    HoD
    ZA b do re
    100 Baza danych 100 Alex
    101 Mechanika --- ---
    102 Elektronika 102 Maya

    Prawe połączenie zewnętrzne: (R
    S)

    Wszystkie krotki z relacji Right, S, są zawarte w wynikowej relacji. Jeśli w S znajdują się krotki bez żadnej pasującej krotki w R, wówczas atrybuty R wynikowej relacji mają wartość NULL.

    Kursy
    HoD
    ZA b do re
    100 Baza danych 100 Alex
    102 Elektronika 102 Maya
    --- --- 104 Mira

    Pełne połączenie zewnętrzne: (R
    S)

    Wszystkie krotki z obu relacji uczestniczących są uwzględniane w wynikowej relacji. Jeśli nie ma pasujących krotek dla obu relacji, ich odpowiednie niedopasowane atrybuty przyjmują wartość NULL.

    Kursy
    HoD
    ZA b do re
    100 Baza danych 100 Alex
    101 Mechanika --- ---
    102 Elektronika 102 Maya
    --- --- 104 Mira

    Bazy danych są przechowywane w formatach plików, które zawierają rekordy. Na poziomie fizycznym rzeczywiste dane są przechowywane w formacie elektromagnetycznym na jakimś urządzeniu. Te urządzenia pamięci masowej można ogólnie podzielić na trzy typy -

    • Primary Storage- Pamięć, która jest bezpośrednio dostępna dla procesora, należy do tej kategorii. Pamięć wewnętrzna procesora (rejestry), pamięć szybka (cache) i pamięć główna (RAM) są bezpośrednio dostępne dla procesora, ponieważ wszystkie są umieszczone na płycie głównej lub chipsecie procesora. Ten magazyn jest zwykle bardzo mały, ultraszybki i niestabilny. Pamięć podstawowa wymaga ciągłego zasilania w celu utrzymania jej stanu. W przypadku awarii zasilania wszystkie dane zostaną utracone.

    • Secondary Storage- Dodatkowe urządzenia magazynujące są używane do przechowywania danych do wykorzystania w przyszłości lub jako kopia zapasowa. Pamięć dodatkowa obejmuje urządzenia pamięci, które nie są częścią chipsetu procesora ani płyty głównej, na przykład dyski magnetyczne, dyski optyczne (DVD, CD itp.), Dyski twarde, napędy flash i taśmy magnetyczne.

    • Tertiary Storage- Trzecia pamięć służy do przechowywania ogromnych ilości danych. Ponieważ takie urządzenia pamięci masowej są zewnętrzne w stosunku do systemu komputerowego, ich prędkość jest najwolniejsza. Te urządzenia pamięci masowej są najczęściej używane do tworzenia kopii zapasowych całego systemu. Dyski optyczne i taśmy magnetyczne są szeroko stosowane jako trzecia pamięć.

    Hierarchia pamięci

    System komputerowy ma dobrze zdefiniowaną hierarchię pamięci. CPU ma bezpośredni dostęp do swojej pamięci głównej, jak również do wbudowanych rejestrów. Czas dostępu do pamięci głównej jest oczywiście mniejszy niż szybkość procesora. Aby zminimalizować to niedopasowanie prędkości, wprowadzono pamięć podręczną. Pamięć podręczna zapewnia najkrótszy czas dostępu i zawiera dane, do których procesor ma najczęściej dostęp.

    Pamięć, do której dostęp jest najszybszy, jest najbardziej kosztowna. Większe urządzenia pamięci masowej oferują niską prędkość i są tańsze, jednak mogą przechowywać ogromne ilości danych w porównaniu z rejestrami procesora lub pamięcią podręczną.

    Dyski magnetyczne

    Dyski twarde są najpowszechniejszymi dodatkowymi urządzeniami pamięci masowej w obecnych systemach komputerowych. Nazywa się je dyskami magnetycznymi, ponieważ wykorzystują koncepcję magnetyzacji do przechowywania informacji. Dyski twarde składają się z metalowych dysków pokrytych magnesowalnym materiałem. Dyski te są umieszczane pionowo na wrzecionie. Głowica do odczytu / zapisu przesuwa się pomiędzy dyskami i służy do namagnesowania lub odmagnesowania miejsca pod nią. Namagnesowaną plamkę można rozpoznać jako 0 (zero) lub 1 (jeden).

    Dyski twarde są formatowane w dobrze zdefiniowanej kolejności w celu wydajnego przechowywania danych. Płyta dysku twardego ma wiele koncentrycznych okręgów, tzwtracks. Każdy utwór jest dalej podzielony nasectors. Sektor na dysku twardym zwykle przechowuje 512 bajtów danych.

    NALOT

    RAID oznacza Robfity Array of Inzależne Disks, czyli technologia umożliwiająca podłączenie wielu dodatkowych urządzeń pamięci masowej i używanie ich jako jednego nośnika.

    RAID składa się z tablicy dysków, w których wiele dysków jest połączonych ze sobą, aby osiągnąć różne cele. Poziomy RAID definiują użycie macierzy dyskowych.

    • RAID 0- Na tym poziomie zaimplementowano rozłożoną tablicę dysków. Dane są dzielone na bloki, a bloki są rozprowadzane na dyskach. Każdy dysk otrzymuje blok danych do równoległego zapisu / odczytu. Zwiększa szybkość i wydajność urządzenia pamięci masowej. Na poziomie 0 nie ma parzystości i kopii zapasowej.

    • RAID 1- RAID 1 wykorzystuje techniki dublowania. Gdy dane są wysyłane do kontrolera RAID, wysyła kopię danych do wszystkich dysków w macierzy. Nazywany jest również poziomem RAID 1mirroring i zapewnia 100% redundancję w przypadku awarii.

    • RAID 2- RAID 2 rejestruje kod korekcji błędów przy użyciu odległości Hamminga dla swoich danych, rozłożonych na różnych dyskach. Podobnie jak w przypadku poziomu 0, każdy bit danych w słowie jest zapisywany na oddzielnym dysku, a kody ECC słów danych są przechowywane na różnych dyskach zestawu. Ze względu na złożoną strukturę i wysoki koszt RAID 2 nie jest dostępny na rynku.

    • RAID 3- RAID 3 rozkłada dane na wielu dyskach. Bit parzystości wygenerowany dla słowa danych jest przechowywany na innym dysku. Ta technika pozwala przezwyciężyć awarie jednego dysku.

    • RAID 4- Na tym poziomie cały blok danych jest zapisywany na dyskach z danymi, a następnie generowana jest parzystość i przechowywana na innym dysku. Zauważ, że poziom 3 używa rozłożenia na poziomie bajtów, podczas gdy poziom 4 używa rozłożenia na poziomie bloku. Zarówno poziom 3, jak i poziom 4 wymagają co najmniej trzech dysków do zaimplementowania RAID.

    • RAID 5 - RAID 5 zapisuje całe bloki danych na różnych dyskach, ale bity parzystości generowane dla paska bloków danych są rozdzielane na wszystkie dyski z danymi, a nie są przechowywane na innym dedykowanym dysku.

    • RAID 6- RAID 6 jest rozszerzeniem poziomu 5. Na tym poziomie dwie niezależne parzystości są generowane i przechowywane w sposób rozproszony na wielu dyskach. Dwie parzystości zapewniają dodatkową odporność na uszkodzenia. Ten poziom wymaga co najmniej czterech dysków do zaimplementowania RAID.

    Względne dane i informacje są przechowywane zbiorczo w formatach plików. Plik to sekwencja rekordów przechowywanych w formacie binarnym. Dysk jest sformatowany w kilka bloków, które mogą przechowywać rekordy. Rekordy plików są mapowane na te bloki dysku.

    Organizacja plików

    Organizacja plików definiuje sposób mapowania rekordów plików na bloki dysku. Mamy cztery typy organizacji plików do organizowania rekordów plików -

    Organizacja pliku sterty

    Gdy plik jest tworzony przy użyciu organizacji pliku sterty, system operacyjny przydziela obszar pamięci do tego pliku bez dalszych szczegółów rozliczania. Rekordy plików można umieścić w dowolnym miejscu w tym obszarze pamięci. Za zarządzanie zapisami odpowiada oprogramowanie. Plik sterty nie obsługuje samodzielnie porządkowania, sekwencjonowania ani indeksowania.

    Sekwencyjna organizacja plików

    Każdy rekord pliku zawiera pole danych (atrybut) w celu jednoznacznej identyfikacji tego rekordu. W sekwencyjnej organizacji zbioru rekordy są umieszczane w pliku w określonej kolejności w oparciu o unikalne pole klucza lub klucz wyszukiwania. W praktyce nie jest możliwe sekwencyjne przechowywanie wszystkich rekordów w postaci fizycznej.

    Organizacja pliku skrótu

    Organizacja pliku skrótu wykorzystuje obliczenia funkcji skrótu w niektórych polach rekordów. Wynik funkcji skrótu określa lokalizację bloku dysku, w którym mają być umieszczone rekordy.

    Organizacja plików w klastrze

    Organizacja plików w klastrze nie jest uważana za dobrą w przypadku dużych baz danych. W tym mechanizmie powiązane rekordy z jednej lub więcej relacji są przechowywane w tym samym bloku dyskowym, to znaczy kolejność rekordów nie jest oparta na kluczu podstawowym ani kluczu wyszukiwania.

    Operacje na plikach

    Operacje na plikach baz danych można ogólnie podzielić na dwie kategorie -

    • Update Operations

    • Retrieval Operations

    Operacje aktualizacji zmieniają wartości danych przez wstawienie, usunięcie lub aktualizację. Z drugiej strony operacje pobierania nie zmieniają danych, ale pobierają je po opcjonalnym filtrowaniu warunkowym. W obu rodzajach operacji selekcja odgrywa znaczącą rolę. Oprócz tworzenia i usuwania pliku może być kilka operacji, które można wykonać na plikach.

    • Open - Plik można otworzyć w jednym z dwóch trybów, read mode lub write mode. W trybie odczytu system operacyjny nie pozwala nikomu zmieniać danych. Innymi słowy, dane są tylko do odczytu. Pliki otwarte w trybie do odczytu mogą być współużytkowane przez kilka jednostek. Tryb zapisu umożliwia modyfikację danych. Pliki otwarte w trybie zapisu można odczytać, ale nie można ich udostępniać.

    • Locate- Każdy plik ma wskaźnik pliku, który informuje o aktualnej pozycji, w której mają być odczytane lub zapisane dane. Ten wskaźnik można odpowiednio dostosować. Korzystając z operacji wyszukiwania (wyszukiwania), można go przesuwać do przodu lub do tyłu.

    • Read- Domyślnie, gdy pliki są otwierane w trybie odczytu, wskaźnik pliku wskazuje początek pliku. Istnieją opcje, w których użytkownik może wskazać systemowi operacyjnemu, gdzie ma znaleźć wskaźnik pliku w momencie otwierania pliku. Czytane są najbliższe dane do wskaźnika pliku.

    • Write- Użytkownik może wybrać otwarcie pliku w trybie zapisu, który umożliwia edycję jego zawartości. Może to być usunięcie, wstawienie lub modyfikacja. Wskaźnik pliku może znajdować się w momencie otwierania lub może być dynamicznie zmieniany, jeśli pozwala na to system operacyjny.

    • Close- To najważniejsza operacja z punktu widzenia systemu operacyjnego. Gdy generowane jest żądanie zamknięcia pliku, system operacyjny

      • usuwa wszystkie blokady (jeśli w trybie współdzielonym),
      • zapisuje dane (jeśli zostały zmienione) na dodatkowym nośniku pamięci, a
      • zwalnia wszystkie bufory i programy obsługi plików powiązane z plikiem.

    Organizacja danych w pliku odgrywa tutaj ważną rolę. Proces lokalizowania wskaźnika pliku do żądanego rekordu w pliku różni się w zależności od tego, czy rekordy są uporządkowane sekwencyjnie, czy w klastry.

    Wiemy, że dane są przechowywane w formie ewidencji. Każdy rekord ma pole kluczowe, które pomaga go jednoznacznie rozpoznać.

    Indeksowanie to technika struktury danych umożliwiająca wydajne pobieranie rekordów z plików bazy danych na podstawie niektórych atrybutów, na podstawie których zostało wykonane indeksowanie. Indeksowanie w systemach baz danych jest podobne do tego, co widzimy w książkach.

    Indeksowanie jest definiowane na podstawie atrybutów indeksowania. Indeksowanie może mieć następujące typy -

    • Primary Index- Indeks podstawowy jest zdefiniowany w uporządkowanym pliku danych. Plik danych jest uporządkowany nakey field. Pole klucza jest zwykle kluczem podstawowym relacji.

    • Secondary Index - Indeks pomocniczy może być generowany z pola, które jest kluczem kandydującym i ma unikalną wartość w każdym rekordzie lub z pola niebędącego kluczem z zduplikowanymi wartościami.

    • Clustering Index- Indeks klastrowania jest definiowany w uporządkowanym pliku danych. Plik danych jest uporządkowany w polu innym niż klucz.

    Uporządkowane indeksowanie jest dwojakiego rodzaju -

    • Gęsty indeks
    • Rzadki indeks

    Gęsty indeks

    W gęstym indeksie istnieje rekord indeksu dla każdej wartości klucza wyszukiwania w bazie danych. To przyspiesza wyszukiwanie, ale wymaga więcej miejsca do przechowywania samych rekordów indeksu. Rekordy indeksu zawierają wartość klucza wyszukiwania i wskaźnik do rzeczywistego rekordu na dysku.

    Rzadki indeks

    W indeksie rzadkim rekordy indeksu nie są tworzone dla każdego klucza wyszukiwania. Rekord indeksu zawiera klucz wyszukiwania i rzeczywisty wskaźnik do danych na dysku. Aby wyszukać rekord, najpierw przechodzimy przez rekord indeksu i docieramy do rzeczywistej lokalizacji danych. Jeśli szukanych przez nas danych nie ma w miejscu, do którego bezpośrednio docieramy, podążając za indeksem, system rozpoczyna sekwencyjne wyszukiwanie, aż do znalezienia żądanych danych.

    Indeks wielopoziomowy

    Rekordy indeksu zawierają wartości klucza wyszukiwania i wskaźniki danych. Indeks wielopoziomowy jest przechowywany na dysku wraz z aktualnymi plikami bazy danych. Wraz ze wzrostem rozmiaru bazy danych rośnie również rozmiar indeksów. Istnieje ogromna potrzeba przechowywania rekordów indeksu w pamięci głównej, aby przyspieszyć operacje wyszukiwania. Jeśli używany jest indeks jednopoziomowy, nie można przechowywać w pamięci indeksu o dużym rozmiarze, co prowadzi do wielu dostępów do dysku.

    Indeks wielopoziomowy pomaga w rozbiciu indeksu na kilka mniejszych indeksów, aby skrajny poziom był tak mały, że można go zapisać w jednym bloku dysku, który można łatwo umieścić w dowolnym miejscu w pamięci głównej.

    Drzewo B +

    Drzewo AB + to zrównoważone drzewo wyszukiwania binarnego, które jest zgodne z wielopoziomowym formatem indeksu. Węzły liści drzewa B + oznaczają rzeczywiste wskaźniki danych. Drzewo B + zapewnia, że ​​wszystkie węzły liści pozostają na tej samej wysokości, dzięki czemu są zrównoważone. Ponadto węzły liści są połączone za pomocą listy łączy; dlatego drzewo B + może obsługiwać dostęp zarówno losowy, jak i sekwencyjny.

    Struktura drzewa B +

    Każdy węzeł liścia znajduje się w równej odległości od węzła głównego. Drzewo AB + jest w porządkun gdzie njest ustalona dla każdego drzewa B + .

    Internal nodes -

    • Węzły wewnętrzne (inne niż liście) zawierają co najmniej ⌈n / 2⌉ wskaźników, z wyjątkiem węzła głównego.
    • Co najwyżej węzeł wewnętrzny może zawierać pliki n wskaźniki.

    Leaf nodes -

    • Węzły liści zawierają co najmniej ⌈n / 2⌉ wskaźników rekordów i ⌈n / 2⌉ wartości klucza.
    • Co najwyżej węzeł liścia może zawierać n wskaźniki rekordów i n kluczowe wartości.
    • Każdy węzeł liścia zawiera jeden wskaźnik blokowy P wskazuje następny węzeł liścia i tworzy połączoną listę.

    Wstawianie drzewa B +

    • Drzewa B + są wypełniane od dołu, a każdy wpis jest wykonywany w węźle liścia.

    • Jeśli węzeł liścia przepełni się -
      • Podziel węzeł na dwie części.

      • Partycja o godz i = ⌊(m+1)/2⌋.

      • Pierwszy i wpisy są przechowywane w jednym węźle.

      • Reszta wpisów (i + 1 dalej) jest przenoszona do nowego węzła.

      • ith klucz jest zduplikowany u rodzica liścia.

    • Jeśli węzeł nie będący liściem przepełnia -

      • Podziel węzeł na dwie części.

      • Podziel węzeł w i = ⌈(m+1)/2.

      • Wpisy do i są przechowywane w jednym węźle.

      • Reszta wpisów jest przenoszona do nowego węzła.

    Usunięcie drzewa B +

    • Wpisy drzewa B + są usuwane w węzłach liści.

    • Wpis docelowy jest przeszukiwany i usuwany.

      • Jeśli jest to węzeł wewnętrzny, usuń i zastąp wpisem z lewej strony.

    • Po usunięciu testowany jest niedomiar,

      • Jeśli wystąpi niedomiar, roześlij wpisy z pozostawionych węzłów.

    • Jeśli dystrybucja nie jest możliwa od lewej, to

      • Rozpowszechniaj z węzłów bezpośrednio do niego.

    • Jeśli dystrybucja nie jest możliwa z lewej lub prawej strony, to

      • Połącz węzeł z lewej i prawej strony.

    W przypadku ogromnej struktury bazy danych przeszukanie wszystkich wartości indeksu na całym ich poziomie może być prawie niemożliwe, a następnie dotarcie do docelowego bloku danych w celu pobrania żądanych danych. Haszowanie to skuteczna technika obliczania bezpośredniej lokalizacji rekordu danych na dysku bez korzystania ze struktury indeksu.

    Haszowanie wykorzystuje funkcje skrótu z kluczami wyszukiwania jako parametrami do generowania adresu rekordu danych.

    Organizacja skrótu

    • Bucket- Plik skrótu przechowuje dane w formacie wiadra. Wiadro jest traktowane jako jednostka magazynowa. Wiadro zwykle przechowuje jeden kompletny blok dysku, który z kolei może przechowywać jeden lub więcej rekordów.

    • Hash Function - funkcja skrótu, h, jest funkcją mapującą, która odwzorowuje cały zestaw klawiszy wyszukiwania Kna adres, pod którym znajdują się aktualne zapisy. Jest to funkcja od kluczy wyszukiwania do adresów zasobników.

    Haszowanie statyczne

    W statycznym haszowaniu, gdy podana jest wartość klucza wyszukiwania, funkcja skrótu zawsze oblicza ten sam adres. Na przykład, jeśli używana jest funkcja hash mod-4, to wygeneruje tylko 5 wartości. Adres wyjściowy będzie zawsze taki sam dla tej funkcji. Liczba dostarczonych zasobników pozostaje niezmieniona przez cały czas.

    Operacja

    • Insertion - Gdy wymagane jest wprowadzenie rekordu przy użyciu statycznego skrótu, funkcja skrótu h oblicza adres zasobnika dla klucza wyszukiwania K, gdzie rekord będzie przechowywany.

      Adres wiadra = h (K)

    • Search - Gdy trzeba pobrać rekord, można użyć tej samej funkcji skrótu do pobrania adresu zasobnika, w którym przechowywane są dane.

    • Delete - To jest po prostu wyszukiwanie, po którym następuje operacja usunięcia.

    Przepełnienie łyżki

    Stan przepełnienia łyżki jest znany jako collision. Jest to stan krytyczny dla dowolnej statycznej funkcji skrótu. W takim przypadku można zastosować łańcuch przepełnienia.

    • Overflow Chaining- Gdy zasobniki są pełne, nowy zasobnik jest przydzielany dla tego samego wyniku mieszania i jest łączony po poprzednim. Ten mechanizm nazywa sięClosed Hashing.

    • Linear Probing- Gdy funkcja skrótu generuje adres, pod którym dane są już zapisane, przydzielany jest następny wolny przedział. Ten mechanizm nazywa sięOpen Hashing.

    Dynamic Hashing

    Problem z haszowaniem statycznym polega na tym, że nie rozszerza się ani nie zmniejsza dynamicznie, gdy rozmiar bazy danych rośnie lub maleje. Dynamiczne mieszanie zapewnia mechanizm, w którym zasobniki danych są dodawane i usuwane dynamicznie i na żądanie. Dynamiczne mieszanie jest również znane jakoextended hashing.

    Funkcja skrótu, w dynamicznym haszowaniu, ma na celu generowanie dużej liczby wartości i tylko kilka z nich jest używanych początkowo.

    Organizacja

    Przedrostek całej wartości skrótu jest traktowany jako indeks skrótu. Tylko część wartości skrótu jest używana do obliczania adresów zasobnika. Każdy indeks skrótu ma wartość głębokości, która wskazuje, ile bitów jest używanych do obliczenia funkcji skrótu. Te bity mogą adresować 2n segmentów. Kiedy wszystkie te bity są zużyte - to znaczy, gdy wszystkie pojemniki są pełne - wówczas wartość głębokości jest zwiększana liniowo i przydzielane są dwa razy więcej pojemników.

    Operacja

    • Querying - Spójrz na wartość głębokości indeksu skrótu i ​​użyj tych bitów do obliczenia adresu zasobnika.

    • Update - Wykonaj zapytanie jak powyżej i zaktualizuj dane.

    • Deletion - Wykonaj zapytanie, aby zlokalizować żądane dane i je usunąć.

    • Insertion - Oblicz adres wiadra

      • Jeśli wiadro jest już pełne.
        • Dodaj więcej wiader.
        • Dodaj dodatkowe bity do wartości skrótu.
        • Oblicz ponownie funkcję skrótu.
      • Jeszcze
        • Dodaj dane do wiadra,
      • Jeśli wszystkie zasobniki są pełne, wykonaj środki zaradcze polegające na statycznym mieszaniu.

    Haszowanie nie jest korzystne, gdy dane są uporządkowane w jakiejś kolejności, a zapytania wymagają zakresu danych. Gdy dane są dyskretne i losowe, funkcja skrótu działa najlepiej.

    Algorytmy haszujące mają większą złożoność niż indeksowanie. Wszystkie operacje skrótu są wykonywane w stałym czasie.

    Transakcję można zdefiniować jako grupę zadań. Pojedyncze zadanie to minimalna jednostka przetwarzania, której nie można dalej podzielić.

    Weźmy przykład prostej transakcji. Załóżmy, że pracownik banku przesyła Rs 500 z konta A na konto B. Ta bardzo prosta i niewielka transakcja obejmuje kilka zadań niskiego poziomu.

    A’s Account

    Open_Account(A)
    Old_Balance = A.balance
    New_Balance = Old_Balance - 500
    A.balance = New_Balance
    Close_Account(A)

    B’s Account

    Open_Account(B)
    Old_Balance = B.balance
    New_Balance = Old_Balance + 500
    B.balance = New_Balance
    Close_Account(B)

    Właściwości KWASU

    Transakcja to bardzo mała jednostka programu i może zawierać kilka zadań niskiego poziomu. Transakcja w systemie bazy danych musi być utrzymywanaAtomiczność, Cnieustępliwość, Isolacja i Dużyteczność - powszechnie znana jako właściwości ACID - w celu zapewnienia dokładności, kompletności i integralności danych.

    • Atomicity- Ta właściwość określa, że ​​transakcja musi być traktowana jako niepodzielna jednostka, to znaczy albo wszystkie jej operacje są wykonywane, albo żadna. W bazie danych nie może być stanu, w którym transakcja została częściowo zakończona. Państwa należy zdefiniować przed wykonaniem transakcji lub po wykonaniu / przerwaniu / niepowodzeniu transakcji.

    • Consistency- Baza danych musi pozostać w spójnym stanie po każdej transakcji. Żadna transakcja nie powinna mieć negatywnego wpływu na dane znajdujące się w bazie danych. Jeśli baza danych była w stanie spójności przed wykonaniem transakcji, musi pozostać spójna również po wykonaniu transakcji.

    • Durability- Baza danych powinna być wystarczająco trwała, aby pomieścić wszystkie najnowsze aktualizacje, nawet jeśli system ulegnie awarii lub zostanie ponownie uruchomiony. Jeśli transakcja aktualizuje porcję danych w bazie danych i zatwierdza, baza danych będzie przechowywać zmodyfikowane dane. Jeśli transakcja zostanie zatwierdzona, ale system zawiedzie, zanim dane zostaną zapisane na dysku, dane te zostaną zaktualizowane, gdy system wróci do działania.

    • Isolation- W systemie bazodanowym, w którym jednocześnie i równolegle wykonywanych jest więcej niż jedna transakcja, właściwość izolacji stanowi, że wszystkie transakcje będą przeprowadzane i wykonywane tak, jakby była to jedyna transakcja w systemie. Żadna transakcja nie wpłynie na istnienie jakiejkolwiek innej transakcji.

    Możliwość serializacji

    Kiedy system operacyjny wykonuje wiele transakcji w środowisku wieloprogramowym, istnieje możliwość, że instrukcje jednej transakcji są przeplatane z inną transakcją.

    • Schedule- Chronologiczna sekwencja wykonania transakcji nazywana jest harmonogramem. Harmonogram może zawierać wiele transakcji, z których każda składa się z wielu instrukcji / zadań.

    • Serial Schedule- Jest to harmonogram, w którym transakcje są wyrównane w taki sposób, że jedna transakcja jest wykonywana jako pierwsza. Kiedy pierwsza transakcja zakończy swój cykl, wykonywana jest następna transakcja. Transakcje są zlecane jedna po drugiej. Ten typ harmonogramu nazywany jest harmonogramem szeregowym, ponieważ transakcje są wykonywane w sposób szeregowy.

    W środowisku z wieloma transakcjami harmonogramy seryjne są traktowane jako wzorzec. Nie można zmienić kolejności wykonywania instrukcji w transakcji, ale w przypadku dwóch transakcji instrukcje mogą być wykonywane w sposób losowy. To wykonanie nie szkodzi, jeśli dwie transakcje są wzajemnie niezależne i działają na różnych segmentach danych; ale jeśli te dwie transakcje działają na tych samych danych, wyniki mogą się różnić. Ten zmienny wynik może doprowadzić bazę danych do niespójnego stanu.

    Aby rozwiązać ten problem, zezwalamy na równoległe wykonywanie harmonogramu transakcji, jeśli jego transakcje mogą być serializowane lub mają między sobą relację równoważności.

    Harmonogramy równoważności

    Harmonogram równoważności może mieć następujące typy -

    Równoważność wyników

    Jeśli dwa harmonogramy dają ten sam wynik po wykonaniu, mówi się, że są równoważne wynikowi. Mogą one dawać ten sam wynik dla pewnej wartości i inne wyniki dla innego zestawu wartości. Dlatego ta równoważność nie jest ogólnie uważana za znaczącą.

    Wyświetl równoważność

    Dwa harmonogramy byłyby równoważne, gdyby transakcje w obu harmonogramach wykonywały podobne czynności w podobny sposób.

    Na przykład -

    • Jeśli T czyta dane początkowe w S1, to odczytuje również dane początkowe w S2.

    • Jeśli T czyta wartość zapisaną przez J w S1, to odczytuje również wartość zapisaną przez J w S2.

    • Jeśli T wykonuje ostatni zapis wartości danych w S1, to wykonuje również ostatni zapis wartości danych w S2.

    Równoważność w konflikcie

    Dwa harmonogramy byłyby w konflikcie, gdyby miały następujące właściwości -

    • Obie należą do oddzielnych transakcji.
    • Oba mają dostęp do tego samego elementu danych.
    • Przynajmniej jedna z nich to operacja „zapisu”.

    O dwóch harmonogramach zawierających wiele transakcji z sprzecznymi operacjami mówi się, że są równoważne konfliktowi wtedy i tylko wtedy, gdy -

    • Oba harmonogramy zawierają ten sam zestaw transakcji.
    • Kolejność sprzecznych par operacji jest zachowana w obu harmonogramach.

    Note- Wyświetl równoważne harmonogramy można serializować, a harmonogramy równoważne konfliktom można serializować. Wszystkie harmonogramy konfliktów, które można serializować, są również możliwe do serializacji widoku.

    Stany transakcji

    Transakcja w bazie danych może znajdować się w jednym z następujących stanów -

    • Active- W tym stanie transakcja jest wykonywana. To jest stan początkowy każdej transakcji.

    • Partially Committed - Kiedy transakcja wykonuje swoją ostateczną operację, mówi się, że jest w stanie częściowo zatwierdzonym.

    • Failed- Mówi się, że transakcja jest w stanie niepowodzenia, jeśli którykolwiek z testów przeprowadzonych przez system odtwarzania bazy danych nie powiedzie się. Nieudana transakcja nie może już być kontynuowana.

    • Aborted- Jeśli którykolwiek z testów zakończy się niepowodzeniem, a transakcja osiągnęła stan niepowodzenia, menedżer odtwarzania wycofuje wszystkie operacje zapisu w bazie danych, aby przywrócić bazę danych do pierwotnego stanu, w jakim znajdowała się przed wykonaniem transakcji. Transakcje w tym stanie nazywane są przerwanymi. Moduł odzyskiwania bazy danych może wybrać jedną z dwóch operacji po przerwaniu transakcji -

      • Ponownie rozpocznij transakcję
      • Zabij transakcję
    • Committed- Jeśli transakcja pomyślnie wykonuje wszystkie swoje operacje, mówi się, że została zatwierdzona. Wszystkie jego skutki są teraz trwale utrwalone w systemie bazy danych.

    W środowisku wieloprogramowym, w którym można wykonywać wiele transakcji jednocześnie, bardzo ważne jest kontrolowanie współbieżności transakcji. Mamy protokoły kontroli współbieżności, aby zapewnić atomowość, izolację i możliwość serializacji współbieżnych transakcji. Protokoły kontroli współbieżności można ogólnie podzielić na dwie kategorie -

    • Lock based protocols
    • Time stamp based protocols

    Lock-based Protocols

    Database systems equipped with lock-based protocols use a mechanism by which any transaction cannot read or write data until it acquires an appropriate lock on it. Locks are of two kinds −

    • Binary Locks − A lock on a data item can be in two states; it is either locked or unlocked.

    • Shared/exclusive − This type of locking mechanism differentiates the locks based on their uses. If a lock is acquired on a data item to perform a write operation, it is an exclusive lock. Allowing more than one transaction to write on the same data item would lead the database into an inconsistent state. Read locks are shared because no data value is being changed.

    There are four types of lock protocols available −

    Simplistic Lock Protocol

    Simplistic lock-based protocols allow transactions to obtain a lock on every object before a 'write' operation is performed. Transactions may unlock the data item after completing the ‘write’ operation.

    Pre-claiming Lock Protocol

    Pre-claiming protocols evaluate their operations and create a list of data items on which they need locks. Before initiating an execution, the transaction requests the system for all the locks it needs beforehand. If all the locks are granted, the transaction executes and releases all the locks when all its operations are over. If all the locks are not granted, the transaction rolls back and waits until all the locks are granted.

    Two-Phase Locking 2PL

    This locking protocol divides the execution phase of a transaction into three parts. In the first part, when the transaction starts executing, it seeks permission for the locks it requires. The second part is where the transaction acquires all the locks. As soon as the transaction releases its first lock, the third phase starts. In this phase, the transaction cannot demand any new locks; it only releases the acquired locks.

    Two-phase locking has two phases, one is growing, where all the locks are being acquired by the transaction; and the second phase is shrinking, where the locks held by the transaction are being released.

    To claim an exclusive (write) lock, a transaction must first acquire a shared (read) lock and then upgrade it to an exclusive lock.

    Strict Two-Phase Locking

    The first phase of Strict-2PL is same as 2PL. After acquiring all the locks in the first phase, the transaction continues to execute normally. But in contrast to 2PL, Strict-2PL does not release a lock after using it. Strict-2PL holds all the locks until the commit point and releases all the locks at a time.

    Strict-2PL does not have cascading abort as 2PL does.

    Timestamp-based Protocols

    The most commonly used concurrency protocol is the timestamp based protocol. This protocol uses either system time or logical counter as a timestamp.

    Lock-based protocols manage the order between the conflicting pairs among transactions at the time of execution, whereas timestamp-based protocols start working as soon as a transaction is created.

    Every transaction has a timestamp associated with it, and the ordering is determined by the age of the transaction. A transaction created at 0002 clock time would be older than all other transactions that come after it. For example, any transaction 'y' entering the system at 0004 is two seconds younger and the priority would be given to the older one.

    In addition, every data item is given the latest read and write-timestamp. This lets the system know when the last ‘read and write’ operation was performed on the data item.

    Timestamp Ordering Protocol

    The timestamp-ordering protocol ensures serializability among transactions in their conflicting read and write operations. This is the responsibility of the protocol system that the conflicting pair of tasks should be executed according to the timestamp values of the transactions.

    • The timestamp of transaction Ti is denoted as TS(Ti).
    • Read time-stamp of data-item X is denoted by R-timestamp(X).
    • Write time-stamp of data-item X is denoted by W-timestamp(X).

    Timestamp ordering protocol works as follows −

    • If a transaction Ti issues a read(X) operation −

      • If TS(Ti) < W-timestamp(X)
        • Operation rejected.
      • If TS(Ti) >= W-timestamp(X)
        • Operation executed.
      • All data-item timestamps updated.
    • If a transaction Ti issues a write(X) operation −

      • If TS(Ti) < R-timestamp(X)
        • Operation rejected.
      • If TS(Ti) < W-timestamp(X)
        • Operation rejected and Ti rolled back.
      • Otherwise, operation executed.

    Thomas' Write Rule

    This rule states if TS(Ti) < W-timestamp(X), then the operation is rejected and Ti is rolled back.

    Time-stamp ordering rules can be modified to make the schedule view serializable.

    Instead of making Ti rolled back, the 'write' operation itself is ignored.

    In a multi-process system, deadlock is an unwanted situation that arises in a shared resource environment, where a process indefinitely waits for a resource that is held by another process.

    For example, assume a set of transactions {T0, T1, T2, ...,Tn}. T0 needs a resource X to complete its task. Resource X is held by T1, and T1 is waiting for a resource Y, which is held by T2. T2 is waiting for resource Z, which is held by T0. Thus, all the processes wait for each other to release resources. In this situation, none of the processes can finish their task. This situation is known as a deadlock.

    Deadlocks are not healthy for a system. In case a system is stuck in a deadlock, the transactions involved in the deadlock are either rolled back or restarted.

    Deadlock Prevention

    To prevent any deadlock situation in the system, the DBMS aggressively inspects all the operations, where transactions are about to execute. The DBMS inspects the operations and analyzes if they can create a deadlock situation. If it finds that a deadlock situation might occur, then that transaction is never allowed to be executed.

Istnieją schematy zapobiegania zakleszczeniom, które wykorzystują mechanizm porządkowania znaczników czasu transakcji w celu wcześniejszego określenia sytuacji zakleszczenia.

Program Wait-Die

W tym schemacie, jeśli transakcja żąda zablokowania zasobu (elementu danych), który jest już utrzymywany z powodującą konflikt blokadę przez inną transakcję, wówczas może wystąpić jedna z dwóch możliwości -

  • Jeżeli TS (T i ) <TS (T j ) - to jest T i , które żąda konfliktu blokady, jest starsze niż T j - wtedy T i może czekać, aż pozycja danych będzie dostępna.

  • Jeśli TS (T i )> TS (t j ) - czyli T i jest młodsze niż T j - to T i umiera. T i jest ponownie uruchamiany później z losowym opóźnieniem, ale z tym samym znacznikiem czasu.

Ten schemat pozwala starszej transakcji czekać, ale zabija młodszą.

Schemat oczekiwania na rany

W tym schemacie, jeśli transakcja żąda zablokowania zasobu (elementu danych), który jest już utrzymywany z powodującą konflikt blokadę przez inną transakcję, może wystąpić jedna z dwóch możliwości -

  • Jeżeli TS (T i ) <TS (T j ), to T i wymusza cofnięcie T j - czyli ran T i T j . T j jest uruchamiane ponownie później z losowym opóźnieniem, ale z tym samym znacznikiem czasu.

  • Jeśli TS (T i )> TS (T j ), to T i jest zmuszone czekać, aż zasób będzie dostępny.

Ten schemat pozwala młodszej transakcji czekać; ale kiedy starsza transakcja żąda pozycji posiadanej przez młodszego, starsza transakcja zmusza młodszą do przerwania i zwolnienia pozycji.

W obu przypadkach transakcja, która trafia do systemu na późniejszym etapie, jest przerywana.

Unikanie impasu

Przerwanie transakcji nie zawsze jest praktycznym podejściem. Zamiast tego mechanizmy unikania zakleszczenia mogą być używane do wykrywania z wyprzedzeniem wszelkich sytuacji zakleszczenia. Dostępne są metody takie jak „wykres oczekiwania na”, ale są one odpowiednie tylko dla tych systemów, w których transakcje są lekkie i mają mniej wystąpień zasobów. W nieporęcznym systemie techniki zapobiegania zakleszczeniom mogą dobrze działać.

Wykres oczekiwania

Jest to prosta metoda umożliwiająca śledzenie ewentualnych sytuacji zakleszczenia. Dla każdej transakcji wprowadzanej do systemu tworzony jest węzeł. Kiedy transakcja T i żąda blokady pozycji, powiedzmy X, która jest utrzymywana przez jakąś inną transakcję T j , tworzona jest skierowana krawędź z T i do T j . Jeśli T j zwolni element X, krawędź między nimi jest odrzucana, a T i blokuje element danych.

System utrzymuje ten wykres oczekiwania dla każdej transakcji oczekującej na niektóre elementy danych przechowywane przez innych. System na bieżąco sprawdza, czy na wykresie występuje cykl.

Tutaj możemy zastosować dowolne z dwóch następujących podejść -

  • Po pierwsze, nie zezwalaj na żadne żądania dotyczące pozycji, które są już zablokowane przez inną transakcję. Nie zawsze jest to wykonalne i może spowodować głód, gdy transakcja czeka na element danych w nieskończoność i nigdy nie może ich uzyskać.

  • Drugą opcją jest cofnięcie jednej z transakcji. Cofnięcie młodszej transakcji nie zawsze jest możliwe, ponieważ może być ważniejsze niż starsza. Przy pomocy pewnego względnego algorytmu wybierana jest transakcja, która ma zostać przerwana. Ta transakcja jest znana jakovictim a proces jest znany jako victim selection.

Utrata pamięci lotnej

Pamięć ulotna, taka jak pamięć RAM, przechowuje wszystkie aktywne dzienniki, bufory dyskowe i powiązane dane. Ponadto przechowuje wszystkie transakcje, które są aktualnie wykonywane. Co się stanie, jeśli tak ulotna pamięć masowa nagle ulegnie awarii? To oczywiście zabrałoby wszystkie dzienniki i aktywne kopie bazy danych. To sprawia, że ​​odzyskiwanie jest prawie niemożliwe, ponieważ wszystko, co jest wymagane do odzyskania danych, zostaje utracone.

W przypadku utraty części lotnej można zastosować następujące techniki:

  • Możemy mieć checkpoints na wielu etapach, tak aby okresowo zapisywać zawartość bazy danych.

  • Stan aktywnej bazy danych w pamięci ulotnej może być okresowy dumped na stabilny magazyn, który może również zawierać dzienniki i aktywne transakcje oraz bloki bufora.

  • <dump> można oznaczyć w pliku dziennika za każdym razem, gdy zawartość bazy danych jest zrzucana z pamięci nieulotnej do stabilnej.

Poprawa

  • Gdy system odzyskuje działanie po awarii, może przywrócić najnowszy zrzut.

  • Może utrzymywać listę powtórzeń i listę cofnięć jako punkty kontrolne.

  • Może przywrócić system, przeglądając listy cofania i ponawiania w celu przywrócenia stanu wszystkich transakcji do ostatniego punktu kontrolnego.

Tworzenie kopii zapasowych i przywracanie bazy danych po katastrofalnej awarii

Katastrofalna awaria to taka, w której stabilne, dodatkowe urządzenie magazynujące ulega uszkodzeniu. Dzięki urządzeniu pamięci masowej wszystkie cenne dane, które są w nim przechowywane, zostaną utracone. Mamy dwie różne strategie odzyskiwania danych po tak katastrofalnej awarii -

  • Zdalna kopia zapasowa & minu; Tutaj kopia zapasowa bazy danych jest przechowywana w zdalnej lokalizacji, skąd można ją przywrócić w przypadku katastrofy.

  • Alternatywnie kopie zapasowe baz danych można wykonywać na taśmach magnetycznych i przechowywać w bezpieczniejszym miejscu. Tę kopię zapasową można później przenieść do świeżo zainstalowanej bazy danych, aby przenieść ją do punktu tworzenia kopii zapasowej.

Dorosłe bazy danych są zbyt obszerne, aby często tworzyć ich kopie zapasowe. W takich przypadkach mamy techniki, dzięki którym możemy przywrócić bazę danych, po prostu patrząc na jej dzienniki. Wszystko, co musimy tutaj zrobić, to tworzyć kopie zapasowe wszystkich dzienników w częstych odstępach czasu. Kopię zapasową bazy danych można wykonywać raz w tygodniu, a dzienniki, które są bardzo małe, można tworzyć codziennie lub tak często, jak to możliwe.

Zdalna kopia zapasowa

Zdalna kopia zapasowa zapewnia poczucie bezpieczeństwa w przypadku zniszczenia podstawowej lokalizacji, w której znajduje się baza danych. Zdalne tworzenie kopii zapasowych może odbywać się w trybie offline, w czasie rzeczywistym lub online. Jeśli jest offline, jest obsługiwany ręcznie.

Systemy kopii zapasowych online są w większym stopniu działające w czasie rzeczywistym i ratują życie administratorów baz danych i inwestorów. System kopii zapasowych online to mechanizm, w którym każdy bit danych w czasie rzeczywistym jest archiwizowany jednocześnie w dwóch odległych miejscach. Jeden z nich jest bezpośrednio podłączony do systemu, a drugi przechowywany w zdalnym miejscu jako kopia zapasowa.

Gdy tylko podstawowa baza danych ulegnie awarii, system zapasowy wykrywa awarię i przełącza system użytkownika na magazyn zdalny. Czasami jest to tak natychmiastowe, że użytkownicy nie mogą nawet zdać sobie sprawy z awarii.

Odzyskiwanie po awarii

DBMS to bardzo złożony system, w którym w każdej sekundzie wykonywane są setki transakcji. Trwałość i solidność DBMS zależy od jego złożonej architektury oraz podstawowego sprzętu i oprogramowania systemowego. Jeśli zawiedzie lub ulegnie awarii podczas transakcji, oczekuje się, że system zastosuje jakiś algorytm lub techniki w celu odzyskania utraconych danych.

Klasyfikacja awarii

Aby zobaczyć, gdzie wystąpił problem, uogólniamy awarię na różne kategorie w następujący sposób:

Niepowodzenie transakcji

Transakcja musi zostać przerwana, gdy nie można jej wykonać lub gdy osiągnie punkt, z którego nie może iść dalej. Nazywa się to niepowodzeniem transakcji, gdy tylko kilka transakcji lub procesów jest uszkodzonych.

Przyczyną niepowodzenia transakcji mogą być:

  • Logical errors - Gdy transakcja nie może zostać zakończona, ponieważ zawiera błąd kodu lub błąd wewnętrzny.

  • System errors- Gdy system bazy danych sam kończy aktywną transakcję, ponieważ DBMS nie jest w stanie jej wykonać lub musi się zatrzymać z powodu jakiegoś stanu systemu. Na przykład w przypadku zakleszczenia lub niedostępności zasobów system przerywa aktywną transakcję.

Awaria systemu

Istnieją problemy - zewnętrzne w stosunku do systemu - które mogą spowodować nagłe zatrzymanie systemu i awarię systemu. Na przykład przerwy w zasilaniu mogą spowodować awarię sprzętu lub oprogramowania.

Przykładami mogą być błędy systemu operacyjnego.

Awaria dysku

We wczesnych dniach ewolucji technologii był to częsty problem, w którym dyski twarde lub dyski do przechowywania danych często ulegały awarii.

Awarie dysków obejmują tworzenie uszkodzonych sektorów, niedostępność dysku, awarię głowicy dysku lub inną awarię, która niszczy całość lub część pamięci dyskowej.

Struktura przechowywania

Opisaliśmy już system przechowywania. Krótko mówiąc, strukturę przechowywania można podzielić na dwie kategorie -

  • Volatile storage- Jak sama nazwa wskazuje, ulotna pamięć nie może przetrwać awarii systemu. Urządzenia pamięci ulotnej są umieszczone bardzo blisko procesora; zwykle są osadzone w samym chipsecie. Na przykład pamięć główna i pamięć podręczna są przykładami pamięci ulotnej. Są szybkie, ale mogą przechowywać tylko niewielką ilość informacji.

  • Non-volatile storage- Te wspomnienia są stworzone, aby przetrwać awarie systemu. Mają ogromną pojemność do przechowywania danych, ale wolniej są dostępne. Przykładami mogą być dyski twarde, taśmy magnetyczne, pamięć flash i nieulotna (podtrzymywana bateryjnie) pamięć RAM.

Odzyskiwanie i atomowość

Kiedy system ulega awarii, może mieć kilka wykonywanych transakcji i otwierać różne pliki w celu zmodyfikowania elementów danych. Transakcje składają się z różnych operacji, które mają charakter atomowy. Ale zgodnie z właściwościami ACID DBMS, należy zachować atomowość transakcji jako całości, to znaczy albo wszystkie operacje są wykonywane, albo żadne.

Kiedy DBMS odzyskuje działanie po awarii, powinien zachować następujące elementy -

  • Powinien sprawdzać stany wszystkich transakcji, które były wykonywane.

  • Transakcja może być w trakcie jakiejś operacji; DBMS musi w tym przypadku zapewnić atomowość transakcji.

  • Powinien sprawdzić, czy transakcja może zostać zakończona teraz, czy też należy ją wycofać.

  • Żadne transakcje nie będą mogły pozostawić DBMS w niespójnym stanie.

Istnieją dwa rodzaje technik, które mogą pomóc DBMS w odzyskiwaniu i utrzymywaniu niepodzielnej transakcji -

  • Utrzymywanie dzienników każdej transakcji i zapisywanie ich w stabilnym magazynie przed faktyczną modyfikacją bazy danych.

  • Utrzymywanie stronicowania w tle, w którym zmiany są dokonywane w pamięci ulotnej, a później aktualna baza danych jest aktualizowana.

Odzyskiwanie na podstawie dziennika

Dziennik to sekwencja rekordów, w której przechowywane są zapisy czynności wykonywanych przez transakcję. Ważne jest, aby dzienniki były zapisywane przed właściwą modyfikacją i przechowywane na stabilnym nośniku, który jest bezpieczny w przypadku awarii.

Odzyskiwanie na podstawie dziennika działa w następujący sposób -

  • Plik dziennika jest przechowywany na stabilnym nośniku.

  • Gdy transakcja wchodzi do systemu i rozpoczyna wykonywanie, zapisuje o niej dziennik.

<Tn, Start>
  • Gdy transakcja modyfikuje pozycję X, zapisuje dzienniki w następujący sposób -

<Tn, X, V1, V2>

Czyta, że ​​T n zmieniło wartość X, z V 1 na V 2 .

  • Po zakończeniu transakcji loguje się -
<Tn, commit>

Bazę danych można modyfikować na dwa sposoby -

  • Deferred database modification - Wszystkie dzienniki są zapisywane w stabilnej pamięci, a baza danych jest aktualizowana po zatwierdzeniu transakcji.

  • Immediate database modification- Każdy dziennik jest zgodny z rzeczywistą modyfikacją bazy danych. Oznacza to, że baza danych jest modyfikowana natychmiast po każdej operacji.

Odzyskiwanie z jednoczesnymi transakcjami

Gdy równolegle wykonywanych jest więcej niż jedna transakcja, dzienniki są przeplatane. W czasie odzyskiwania system odzyskiwania danych może mieć trudności z odtworzeniem wszystkich dzienników, a następnie rozpoczęciem odzyskiwania. Aby złagodzić tę sytuację, większość nowoczesnych DBMS używa koncepcji „punktów kontrolnych”.

Punkt kontrolny

Prowadzenie i utrzymywanie logów w czasie rzeczywistym oraz w rzeczywistym środowisku może wypełnić całą przestrzeń pamięci dostępną w systemie. W miarę upływu czasu plik dziennika może stać się zbyt duży, aby w ogóle go obsługiwać. Checkpoint to mechanizm, w którym wszystkie poprzednie logi są usuwane z systemu i trwale przechowywane na dysku. Punkt kontrolny deklaruje punkt, przed którym DBMS był w spójnym stanie, a wszystkie transakcje zostały zatwierdzone.

Poprawa

Gdy system z równoległymi transakcjami ulega awarii i odzyskuje działanie, zachowuje się w następujący sposób -

  • System odzyskiwania odczytuje dzienniki wstecz od końca do ostatniego punktu kontrolnego.

  • Utrzymuje dwie listy, listę cofania i listę ponawiania.

  • Jeśli system odzyskiwania widzi dziennik z <T n , Start> i <T n , Commit> lub po prostu <T n , Commit>, umieszcza transakcję na liście powtórzeń.

  • Jeśli system odzyskiwania widzi dziennik z <T n , Start>, ale nie znaleziono dziennika zatwierdzania ani przerwania, umieszcza transakcję na liście cofania.

All the transactions in the undo-list are then undone and their logs are removed. All the transactions in the redo-list and their previous logs are removed and then redone before saving their logs.