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?
Odpowiedz
"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
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.
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
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.
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:
- Upewnij walidacji i integralności danych
- 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".
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ę
- 1. Podstawy kluczy obcych w MySQL?
- 2. Wiele kluczy obcych?
- 3. Django serializacji kluczy obcych obiektów
- 4. filtrowania kluczy obcych w Django
- 5. kluczy obcych i MySQL Błędy
- 6. Czy ciągi lub int są preferowane dla kluczy obcych?
- 7. Definiowanie relacji kluczy obcych dla modeli Railsowych
- 8. Django: znaleźć wszystkie odwołania odwrotne kluczy obcych
- 9. Jak załadować elementy kluczy obcych w Tastypie
- 10. Wiele kluczy obcych do tej samej tabeli
- 11. Tablice skrzyżowań a tablice kluczy obcych?
- 12. Czy można wyświetlić listę wszystkich kluczy obcych w bazie danych?
- 13. Django Unikalne Razem (z kluczy obcych)
- 14. Django M2M QuerySet filtrowanie wielu kluczy obcych
- 15. Dodawanie nazwanych kluczy obcych w SQL CREATE
- 16. Dołącz dwie tabele z wielu kluczy obcych
- 17. Czy powinienem używać czcionek typograficznych?
- 18. Czy powinienem używać Universal-ctags?
- 19. Czy powinienem używać takiego constexpr?
- 20. Czy struktury CSS naprawdę warto używać?
- 21. Numpy: Czy powinienem używać newaxis czy None?
- 22. Kiedy nie używać zastępczych kluczy podstawowych?
- 23. Czy powinienem używać autoboxa w Perlu?
- 24. SQLMetal wielu kluczy obcych, wskazując na jeden stół Emisji
- 25. Czy powinienem używać dziedziczenia lub kompozycji?
- 26. Czy naprawdę jest to odbicie, które nie powinienem używać, gdy ma to sens?
- 27. Czy naprawdę powinienem używać static_cast za każdym razem, gdy chcę dokonać konwersji między typami pierwotnymi?
- 28. Zderzenia kluczy obcych podczas używania abstrakcyjnego dziedziczenia wielokrotnego w Django
- 29. Czy powinienem używać System.out.println() lub czegoś innego?
- 30. Czy powinienem używać JDBC getNString() zamiast getString()?
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