2012-01-06 16 views
6

Czy należy używać obcych kluczy do wszystkich powiązanych tabel, czy nie powinienem? Jeśli powinienem użyć, dlaczego?Czy naprawdę powinienem używać kluczy obcych?

+0

możliwe duplikat [Czy klucze obce naprawdę konieczne w projekcie bazy danych?] (Http://stackoverflow.com/questions/18717/are-foreign-keys-really-necessary-in-a-database-design) – cHao

Odpowiedz

6

"Wszystkie powiązane tabele" nie zawsze są jasne, więc nie jest to oczywista sytuacja. Mogą istnieć tabele, które mają wspólną kolumnę, ale mogą się nigdy nie widzieć.

Przydaje się jednak, aby zapobiec błędom, które wymknęły się spod podstawowej ochrony i umożliwić wprowadzanie danych, których nie można łatwo zidentyfikować.

Nie pomagają sprawić, że zapytania będą bardziej efektywne, jeśli masz odpowiednie indeksy, a dobra aplikacja będzie filtrować dane wejściowe na tyle, że nigdy nie będą potrzebne. Ale błędy zdarzają się i są tanią linią obrony.

Jeśli po prostu czujesz się komfortowo przy projektowaniu baz danych, nie są one czymś, co pozwala poświęcić wiele czasu na martwienie się i dopracowywanie szczegółów, gdy masz już podstawowe relacje rodzic/dziecko.

Oto niektóre t? A

What's wrong with foreign keys?

4

Tak, powinieneś. Klucze dostępu są tylko ograniczeniami, które pomagają nawiązywać relacje i mieć pewność, że masz poprawne informacje w bazie danych. Powinieneś ich używać, aby uniemożliwić niepoprawne wprowadzanie danych.

6

Powinieneś. Istnieją trzy główne punkty:

  • w zależności od systemu DB, można uzyskać lepszą wydajność
  • klucze obce zapewnienia integralności danych, na przykład może pomóc w uniknięciu rekordy osierocone itp
  • one wyraźny sposób udokumentować swoją strukturę DB, który może być używany przez narzędzia do wizualizacji, generowanie kodu itd
6

Tak. Ale na umiarkowanych poziomach. Pomaga to w przypadku zapytań o dane. Pomaga w indeksowaniu danych, dzięki czemu szybsze zapytania. Pomaga także w utrzymywaniu relacji między jednostkami.

5

Używanie kluczy obcych jest jedną z podstaw (jeśli nie jedyny), główną koncepcję relacyjnych baz danych. W razie potrzeby powinieneś użyć obcych kluczy. Ponieważ pomaga to:

  1. Upewnij walidacji i integralności danych
  2. zaoszczędzić dużo dodatkowego miejsca

Pierwszy z nich oznacza, zamiast dodanie wartości ręcznie do pola, które będzie Powtórz dla innych rekordów, które właśnie wybierzesz, z tego, co masz w pokrewnym, podstawowym tabeli kluczy. Jeśli spróbujesz wpisać coś, co nie istnieje jako klucz podstawowy w drugiej tabeli, zostaniesz odrzucony (w niektórych bazach możesz jednak poprawić to zachowanie).

Drugi oznacza, że ​​nie trzeba pisać za każdym razem "Stanów Zjednoczonych Ameryki", co zajęłoby znacznie więcej miejsca niż tylko wpisanie identyfikatora "Stanów Zjednoczonych Ameryki".

1

Obecnie istnieje coraz więcej odsunięć od relacyjnych baz danych opartych na kluczach obcych. Systemy baz danych dokumentów, takie jak MongoDB, stają się coraz bardziej popularne.Dzieje się tak w dużej mierze dlatego, że świat staje się coraz bardziej rozproszony w chmurze.

Oznacza to, że czasami nie jest uzasadnione lub wydajne zakładanie natychmiastowej spójności danych.

Masz czytaną bazę danych NoSQL, MongoDB CouchDB i ewentualną spójność, jeśli jesteś zainteresowany.

jej trochę dziwna sprawa dla naszych relacyjne przeszkolony umysły, aby zrozumieć, ale wiele rozwiązań internetowych na dużą skalę

Powiązane problemy