Czy tabela bez klucza podstawowego jest znormalizowana?

9

Podczas wykładu mój wykładowca pokazał nam stół bez klucza podstawowego. Po przesłuchaniu powiedział, że w 3NF, kiedy usuwasz zależności przechodnie, możesz mieć tabelę bez klucza podstawowego.

Jednak żaden klucz podstawowy nie sugeruje, że nie ma zależności funkcjonalnych - ale 3NF polega na usunięciu zależności przechodnich i nauczono mnie, że każda tabela musi mieć klucz podstawowy do normalizacji, ponieważ wszystko zależy od zależności funkcjonalnych.

Wiem, że utworzenie tabeli bez klucza podstawowego jest w pełni możliwe, ale czy ta baza danych jest uważana za znormalizowaną, jeśli ta tabela istnieje?

Powinienem dodać, że tabela nie ma żadnego „unikalnego klucza”, żadnego podstawowego, żadnego złożonego, żadnego obcego.

Przedstawiona tabela ma trzy atrybuty, z których żaden nie jest oznaczony jako podstawowy lub unikalny. Zapytałem, czy to pomyłka, a on odpowiedział, że nie ma takiej możliwości. Zakwestionowałem tę uwagę, ponieważ żadnej z informacji w tabeli nie można jednoznacznie zidentyfikować, a on stwierdził, że tak jest w porządku. Jest to sprzeczne z tym, czego nauczono mnie na temat normalizacji.

Alex
źródło

Odpowiedzi:

15

Jeśli relacja nie ma żadnego klucza kandydującego (i klucz podstawowy jest jednym z kluczy kandydujących), to może mieć zduplikowane wiersze, więc w rzeczywistości nie jest to relacja! (ponieważ relacje są zawsze ustawione).

W takim przypadku bardziej słuszne jest nazywanie go tabelą, a nie relacją, jak to robiłeś w swoim pytaniu, i zauważ, że w efekcie kilka RDBMS może zarządzać brakiem relacji, pozwalając na tabele bez żadnych ograniczeń wyjątkowości, nawet jeśli w tym przypadku jest bardzo rzadkie i powoduje problemy (anomalie) podczas działania na danych.

Ale w tym przypadku mówienie o formach normalnych nie jest właściwe: cała teoria normalizacji opiera się na podstawowym założeniu, że przedmiotem zainteresowania są relacje , a nie multisety. W rzeczywistości teoria ta opiera się na (nieco omówionym) Uniwersalnym Założeniu Relacji, które zakłada, że ​​wszystkie relacje w bazie danych są podzbiorem projekcji takiej relacji, która zawiera wszystkie atrybuty w każdej relacji. A ten obiekt jest w rzeczywistości relacją (tj. Zbiorem), a nie multisetem.

Fakt, że kiedy mówimy o danych relacyjnego modelu danych, czasami wymieniamy dwa terminy, tabele i relacje, nie oznacza, że ​​w rzeczywistości są one synonimami, a różnica ta jest fundamentalna, gdy mówimy o teorii normalizacji. Pamiętaj, że w książkach, gdy wprowadza się jakąś normalną formę, zawsze mówi się coś takiego:

Relacja jest w xxx postaci normalnej, gdy ...

Renzo
źródło
Czy multiset nie jest izomorficzny w zestawie, w którym dodajesz dodatkowy countatrybut do elementów?
Barmar
3
@Barmar tak, ale następnie dodajesz klucz kandydujący i wszystkie odpowiednie zależności funkcjonalne, więc z punktu widzenia teorii normalizacji jesteś w zupełnie innym przypadku.
Renzo
1
Gdy ludzie przeprowadzają operacje relacyjne na tabelach nierelacyjnych, oczekują wyników relacyjnych. Kiedy ich nie dostają, wydają się anomalne.
Walter Mitty
0

3NF odnosi się do tabeli zgodnej z pierwszymi 3 zasadami normalizacji danych.

  1. Eliminacja powtarzających się grup
  2. Eliminacja zbędnych danych
  3. Eliminacja kolumn nie zależy od klucza

Trzecia reguła wymaga klucza. Masz rację, stół wykładowcy nie był 3NF.

Metafora
źródło