/ / Mutiple FK wszystkie kolumny wskazujące na ten sam stół nadrzędny - dobry pomysł? - projektowanie baz danych, klucze obce

Mutiple kolumny FK wszystkie wskazując na ten sam nadrzędny stół - dobry pomysł? - projektowanie baz danych, klucze zagraniczne

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 № 1

Wiele 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.