Dla tych z was, którzy żyją i oddychają projektowaniem baz danych, czy kiedykolwiek znaleźliście ważne powody, aby mieć wiele FK w tabeli, które wszystkie wskazują na tę samą tabelę nadrzędną?
Niedawno mieliśmy do czynienia z sytuacją, w której mymiał tabelę zawierającą sześć kolumn, z których wszystkie były kolumnami FK tej samej tabeli nadrzędnej. Zastanawiamy się, czy to wskazuje na zły projekt z naszej strony, czy też jest to częstsze niż nam się wydaje.
Dziękuję bardzo.
Odpowiedzi:
6 dla odpowiedzi № 1Wiele zależy od sytuacji. Często trzeba tak to wyglądać, innym razem przeprojektowanie jest w porządku. Pierwszym dobrym pomysłem, jaki przychodzi na myśl, jest system przesyłania wiadomości na stronie internetowej, na której user_to
i user_from
oba pola wskazywałyby na user_id
w users
stół.
Jednak dla 6 skierowanych do tyłu, pomyślałem, że coś trzeba przeprojektować, ale bez znajomości szczegółów nie można powiedzieć.
4 dla odpowiedzi nr 2
Tak naprawdę nie można tego analizować w próżni (tj. Bez dostrzegania wymagań). Najważniejsze jest, aby dowiedzieć się, czy te 6 elementów danych jest ze sobą powiązanych.
Zestaw kolumn, taki jak: pozycja1, pozycja2, pozycja3, wyraźnie robiłby to źle (użyj tabeli skrzyżowań), ale jeśli znaczenie każdej kolumny nie jest ze sobą powiązane, jest w porządku, nawet jeśli wygląda trochę dziwny.
3 dla odpowiedzi nr 3
Cóż, może być tabela IMO z kolumnami takimi jak:
Właściciel, CreatedBy, LastModifiedBy, AcceptedBy, ProposedBy, który może wskazywać na jedną tabelę użytkownika
1 dla odpowiedzi nr 4
Robimy to od czasu do czasu, gdy PK jest dlastolik osób i musimy przechowywać szczegóły dotyczące dwóch różnych klas osób w tym samym stole. Gdyby sześć kolumn zawierało uzasadnione informacje (i raczej nie będzie rozszerzane do siedmiu kolumn później), może być w porządku, ale więcej niż dwie i sprawdzę, czy powiązana tabela jest naprawdę potrzebna.
0 dla odpowiedzi № 5
Nie mogę sobie wyobrazić, dlaczego potrzebujesz 6 pól wskazujących na ten sam rekord nadrzędny ... brzmi paskudnie, jak myślałeś. Mówisz „słaby projekt z naszej strony”, czy Twoja firma zaprojektowała stół w ten sposób?
0 dla odpowiedzi № 6
Mam kilka przykładów wielu FK między 2 tabelami.
Niezależnie od tego, czy jest to poprawne, czy nie, prawdopodobnie nie możemy powiedzieć bez dodatkowych informacji
Przykład, który często widujesz:
Powiedzmy, że mam tabelę rzeczy z kluczowym identyfikatorem rzeczy. Mogę mieć tabelę podrzędną z identyfikatorami rzeczyID1, stuffID2 do przechwytywania par. Lub trojaczki z 3 kolumnami FK.
0 dla odpowiedzi № 7
Powinna istnieć baza danych sklepu internetowegojedna tablica zawierająca adresy i jedna tablica zawierająca zamówienia - teraz w zamówieniu znajdują się dwa fk do tabeli adresów, jedna zawierająca wysyłkę i jedna zawierająca klucz adresu rozliczeniowego.
0 dla odpowiedzi № 8
Tabela osób {personID otherpersonattributes ...} Tabela InterPersonRelationships {personID1 personID2 typ relacji}
W takiej sytuacji bardzo naturalne jest posiadanie dwóch różnych FK do tej samej tabeli nadrzędnej.