Jestem stosunkowo nowy w projektowaniu baz danych i postanowiłem stworzyć własną hipotetyczną bazę danych do ćwiczeń. Mam jednak problemy z jej modelowaniem i normalizacją, ponieważ doceniam, że istnieje wiele relacji wiele do wielu (M: N).
Ogólny opis scenariusza
Baza danych służy do przechowywania danych o różnych osobach , które pracowały nad serią Zelda. Chcę śledzić Console (s) , że gry mogą być odtwarzane, Pracownicy , które miały udział w grach rozwoju, Praca Pracownik miał (wiele Pracownicy pracowali w różnych miejscach pracy w wielu Games ), etc.
Zasady biznesowe
- Wielu pracowników może pracować nad wieloma grami .
- Wiele gier może znajdować się na tej samej konsoli .
- Wiele konsol może być platformą dla tej samej gry .
- Wielu pracowników może mieć tę samą pracę .
- Pracownik może mieć wiele Jobs .
- Gra może mieć wiele Employees .
- Gra może mieć wiele rodzajów zatrudnienia w jego rozwoju
- Do wielu gier może być dołączony ten sam typ zadania .
- Konsola może mieć wiele osób pracuje na nim.
- Osoba może pracować na wielu konsolach .
Nazwy atrybutów i przykładowe wartości
- Nazwisko pracownika , które można podzielić na Pierwszy i Ostatni (na przykład „John” i „Doe”)
- Tytuł gry (na przykład „Ocarina of Time”)
- Tytuł stanowiska (na przykład „Projekt poziomu”, „Dyrektor”, „Kompozycja”, „Projektant poziomu”, „Programista”, „Lokalizacja” itp.).
- Nazwa konsoli (na przykład „Game Boy Advance”)
Problem
Jak dotąd wydaje się, że bez względu na to, co projektuję, wszędzie są nadmiarowości danych i relacje M: N między interesującymi rodzajami jednostek. Uważam jednak, że projektanci baz danych muszą ciągle napotykać tego rodzaju problemy, dlatego musi istnieć rozwiązanie.
Uwaga : Jestem w stanie znaleźć dane do wypełnienia tabeli, problemem jest zorganizowanie jej w bazie danych z tabelami w znormalizowanej formie.
źródło
Odpowiedzi:
Tak, identyfikacja powiązań lub relacji wiele-do-wielu (M: N dla zwięzłości) jest sytuacją, z którą praktykujący bazę danych spotykają się dość często podczas tworzenia schematu pojęciowego. Powiązania tych współczynników liczebności powstają w środowiskach biznesowych o bardzo odmiennym charakterze, a gdy są odpowiednio reprezentowane na poziomie logicznym za pomocą np. Rozwiązania SQL-DDL, nie wprowadzają szkodliwych redundancji.
W ten sposób celem modelowania bazy danych powinno być odzwierciedlenie istotnych cech interesującego kontekstu biznesowego z dużą precyzją ; dlatego, jeśli poprawnie zidentyfikujesz, że istnieje wiele powiązań M: N, musisz je wyrazić w (a) schemacie pojęciowym, a także w (b) odpowiednich deklaracjach na poziomie logicznym, bez względu na to, ile takich powiązań - lub dowolnych inne - należy zająć się stosunkami liczności.
Zasady biznesowe
Dostarczyłeś dobrze sformułowane pytanie, a także wyjaśniłeś, że baza danych, nad którą pracujesz, jest czysto hipotetyczna, co jest istotną kwestią, ponieważ uważam, że scenariusz biznesowy w „prawdziwym świecie”, taki jak ten rozważany, byłby znacznie szerszy i dlatego implikują bardziej złożone wymagania informacyjne.
Postanowiłem (1) wprowadzić kilka modyfikacji i rozszerzeń reguł biznesowych, które podałeś, aby (2) stworzyć bardziej opisowy schemat koncepcyjny - choć wciąż raczej hipotetyczny -. Oto niektóre z formuł, które zestawiłem:
1 Strona jest terminem używanym w kontekście prawnym, odnoszącym się do osoby lub grupy osób, które składają się na jeden podmiot, więc ta nazwa nadaje się do reprezentowania Ludzi i Organizacji .
Schemat IDEF1X
Następnie utworzyłem diagram IDEF1X 2 pokazany na rysunku 1 (kliknij link, aby zobaczyć go w wyższej rozdzielczości), konsolidując w jednym urządzeniu graficznym powyższe reguły biznesowe (wraz z kilkoma innymi, które wydają się istotne):
2 Integration Definition for Information Modeling ( IDEF1X ) to wysoce godna polecenia technika modelowania danych, która została ustanowiona jako standard w grudniu 1993 r. Przez Narodowy Instytut Norm i Technologii Stanów Zjednoczonych (NIST). Opiera się na (a) wczesnym materiale teoretycznym autorstwa jedynego twórcy modelu relacyjnego, tj. Dr EF Codda; na (b) widok danych relacji jednostka , opracowany przez dr PP Chen ; a także w (c) Logical Database Design Technique, stworzonej przez Roberta G. Browna.
Jak widać, przedstawiłem tylko trzy powiązania M: N za pomocą odpowiednich typów bytów asocjacyjnych , tj .:
Wśród innych aspektów istnieją dwie różne struktury podtypu , w których:
Osoba i Organizacja to wzajemnie wykluczające się podtypy bytu Partii , ich nadtyp bytu
Produkt jest nadtypem Systemu i Gry , które z kolei są wzajemnie wykluczającymi się podtypami
Jeśli nie jesteś zaznajomiony ze skojarzeniami typu podtyp, możesz znaleźć pomoc, np. Moje odpowiedzi na pytania zatytułowane:
Ilustracyjny logiczny układ SQL-DDL
Sukcesywnie musimy upewnić się, że na poziomie logicznym:
Zadeklarowałem więc następujący układ DDL na podstawie wcześniej pokazanego schematu IDEF1X:
Warto podkreślić, że istnieją deklaracje złożonych ograniczeń KLUCZ PODSTAWOWYCH w kilku tabelach, które reprezentują hierarchię połączeń, które zachodzą między typami jednostek pojęciowych, co może być bardzo korzystne w odniesieniu do wyszukiwania danych, np. Wyrażając SELECT operacje zawierające klauzule JOIN w celu uzyskania tabel pochodnych .
Tak, (i) każde powiązanie M: N oraz (ii) każdy z powiązanych typów jednostek jest oznaczony przez (iii) odpowiednią tabelę w logicznej strukturze DDL, więc zwróć szczególną uwagę na podstawowe KLUCZOWE i ZAGRANICZNE ograniczenia (oraz uwagi, które pozostawiłem jako komentarze) tabel reprezentujących te elementy pojęciowe, ponieważ pomagają one zapewnić, że połączenia między odpowiednimi wierszami spełniają obowiązujące współczynniki liczności.
Zastosowanie kluczy kompozytowych zostało wprowadzone przez dr EF Codda od samego początku paradygmatu relacyjnego, jak wykazano w przykładach, które zawarł w swoim seminarium z 1970 r. Zatytułowanym A Relational Model for Large Shared Data Banks (który dokładnie przedstawia również najbardziej elegancka metoda obsługi pojęciowych skojarzeń M: N).
Kładę się do db <> skrzypce i SQL Fiddle , zarówno w systemie Microsoft SQL Server 2014, dzięki czemu struktura może być przetestowany „w akcji”.
Normalizacja
Normalizacja to procedura na poziomie logicznym, która w zasadzie oznacza:
Eliminacja kolumn nieatomowych za pomocą pierwszej normalnej formy, dzięki czemu manipulacja danymi i ich zwężenie są znacznie łatwiejsze do opanowania dzięki podrzędnemu językowi danych (np. SQL).
Pozbycie się niepożądanych zależności między kolumnami określonej tabeli dzięki kolejnym normalnym formom, aby uniknąć anomalii aktualizacji .
Oczywiście należy wziąć pod uwagę znaczenie, jakie niosą omawiane tabele i kolumny.
Lubię myśleć o normalizacji jako o teście opartym na nauce, że projektant stosuje się do odpowiednich elementów, gdy wyznaczy stabilne ustawienie na poziomie logicznym w celu ustalenia, czy jego elementy są zgodne z każdą z normalnych form, czy nie. Następnie, w razie potrzeby, projektant podejmuje odpowiednie działania korygujące.
Nadmiar
W modelu relacyjnym, podczas gdy powielanie wartości zawartych w kolumnach jest nie tylko dopuszczalne, ale oczekiwane , duplikaty wierszy są zabronione . Do tego stopnia, o ile widzę, duplikaty wierszy i inne rodzaje szkodliwych redundancji są zapobiegane we wszystkich tabelach zawartych w logicznym układzie ujawnionym wcześniej, być może chciałbyś wyjaśnić swoje obawy w tym zakresie.
W każdym razie z pewnością możesz (a) ocenić własną strukturę za pomocą zwykłych formularzy, aby określić, czy spełnia ona wymagania i (b) zmodyfikować ją, jeśli to konieczne.
Powiązane zasoby
Trójskładnikowe stowarzyszenia
Jest jeszcze jeden ważny aspekt, który poruszyłeś za pomocą komentarzy (opublikowanych w usuniętej teraz odpowiedzi):
Ta okoliczność wydaje się wskazywać, że jedna z twoich obaw dotyczy pojęć trójskładnikowych . Zasadniczo, tego rodzaju powiązania powstają, gdy istnieje (1) relacja obejmująca (2) dwa inne relacje, innymi słowy „relacja między relacjami” - również typowa sytuacja, ponieważ relacja jest odrębną jednostką -.
Ustalenia te, jeśli są odpowiednio zarządzane, również nie powodują szkodliwych zwolnień. I tak, jeśli istnieje pewien przypadek użycia, w którym identyfikujesz, że takie relacje występują między typami bytów w „świecie rzeczywistym”, musisz (i) modelować i (ii) deklarować je z dokładnością na poziomie logicznym.
źródło