2010-08-05 16 views
29

Właśnie podałem diagram bazy danych dla DB, który utworzyłem dla naszej głównej bazy danych, a ona umieściła na niej kilka uwag sugerujących, że zmieniam nazwy niektórych tabel, więc jasne jest, że są to tabele odnośników (dodaj "lu" na początku nazwa tabeli).Co to jest tabela odnośników?

Mój problem polega na tym, że nie pasują one do definicji tego, co uważam za tablicę do wyszukania. Zawsze brałem pod uwagę tabelę wzorca, aby w zasadzie był zbiorem opcji, które nie definiują żadnych relacji. Przykład:

luCarMake 
----------- 
id Make 
-- --------- 
1  Audi 
2  Chevy 
3  Ford 

Osoba bazy danych w mojej pracy sugeruje, że zmiana nazwy kilka tabel, które są tylko identyfikatory Maping jednej tabeli do innej formie tabel przeglądowych. Przykład (Location_QuadMap poniżej):

Location 
---------- 
LocationId 
name 
description 

Location_QuadMap <-- suggesting i rename this to luLocationQuad 
---------------- 
QuadMapId 
LocationId 

luQuadMap 
--------- 
QuadMapId 
QuadMapName 

Czy można bezpiecznie założyć, że ona misread schemat czy istnieje inna definicja, że ​​nie jestem świadomy?

Odpowiedz

28

To, co tam masz, nazywa się junction table. Jest on także znany jako

  • tabeli odsyłacz
  • tabeli mostek
  • dołączanej tabeli
  • mapę tabeli
  • tabeli przecięcia
  • łączący tabeli
  • tabeli związek

Ale ja nigdy widziałem termin "tabela odnośników" używany do tego celu.

+5

Mój ostatni menedżer nieustannie określał je jako tabele odnośników. To jedyny powód, dla którego wiedziałem, co to stół, zanim zobaczyłem podany układ. –

+0

Słyszałem również, że nazywa się to "przejściem przez stół". – siliconrockstar

4

Niektórzy używają terminu Tablica odnośników jako tabeli, która znajduje się w środku relacji wiele do wielu.

+0

Zwykle słyszę stół "wiele do wielu" jako stół pomostowy. I, definicja Abe dla tabeli odnośników. To interesujące. – bobs

+0

Dobrze wiedzieć. Nigdy wcześniej o tym nie słyszałem. –

20

Podnieś swoje walki, ale chciałbym prosić o osobie, która ma wyjaśnić konwencję nazewnictwa widząc, że już zasugerował stosując tę ​​samą konwencję o jeden do wielu i wiele-do-wielu. Wygląda na to, że jakikolwiek związek klucza obcego oznacza, że ​​jest w nim tabela "odnośnika".

Jeśli to konwencja nazewnictwa dla innych baz danych, to nie popchnęłabym szczęścia.

+0

Dobrze powiedziane. Są ważniejsze rzeczy do wykopania pięt. –

+1

Nie można się zgodzić z komentarzem "wybierz swoje bitwy". –

9

Tablica przeglądowa jest zwykle tabelą, która działa jak "lista główna" dla czegoś i używa się jej do wyszukiwania wartości klucza biznesowego (np. "Marka") w wymiarze binarnym dla jej identyfikatora (jak kolumna id) dla użyj w kolumnie klucza obcego innej tabeli.

Zasadniczo przychodzisz z czymś, aby "sprawdzić" i wymienić na coś innego.

Z kolei mapka_dokładności jest tabelą mostów, która, jak już powiedzieli inni, jest używana, gdy istnieje relacja wiele do wielu między dwoma obiektami. Jeśli nazwiesz to tabelą odnośników, powiedziałbym, że jakikolwiek stół można nazwać tabelą odnośników. Tabele te zawierają tylko identyfikatory do innych tabel, więc musisz najpierw sprawdzić identyfikator na jednej tabeli, wyszukać identyfikatory pasujące do tabeli pomostów, a następnie wyszukać odpowiedni wiersz (y) w tabeli. Trzeci stolik? Wydaje się, że przyjmujesz ten termin nieco za daleko.

+0

Dziękuję Patricku, szukałem konwencji nazywania nadrzędnego-podrzędnego i zawsze znajdowałem łatwiejszy w wyszukiwaniu wzorca (z dokładnego powodu, dla którego wspomniałeś, że odnośnik jest listą główną). Ten "lookup" starej terminologii przypomina mi o dniach VB i Delphi, gdzie tabela "lookup" była własnością wizualnego komponentu używanego do wyszukiwania wartości, które mógł wprowadzić użytkownik. Twój opis całkowicie pasuje, a ci starsi programiści mogą pamiętać czasy, kiedy był częścią IDE. – Petar

3

Mark Byers ma odpowiednią definicję dla tego stołu. Zasadniczo jest to stół przecinający się. Zobacz dowolny podręcznik do bazy danych.

Ale w rzeczywistości pracowałem z wieloma administratorami i architektami, a większość z nich wymyślała własny styl i nie była otwarta na słuchanie czegokolwiek innego. Rzeczy takie jak reguły wcięć, przypadek dla instrukcji SQL, konwencje nazewnicze dla tabel (nawet naprawdę złe), strategie archiwizacji, itp ... W zasadzie nie masz wyboru, jeśli mają kontrolę nad bazą danych. Możesz wspomnieć, że jest to stół przecinający się, wskazujący na właściwą literaturę, ale w końcu, jeśli ona chce to nazwać MyStupidlyLongAndPointlessPrefixForTablesBez względu na to, że jest tam_La_Lookup_location_Quadmap i nalega, to nic nie możesz zrobić.

Więc spróbuj skierować go do niej, ale jeśli nie iść z nim, nie bierz tego zbyt poważnie ...

Pomyślałem o czymś innym. Tabele przeglądowe (nasza definicja) są powszechnie nazywane tabelami kodów. Może więc wywoływać tablice wyszukiwania tablic przecinających się i tablice kodów tabel wyszukiwania. W takim przypadku może będziesz musiał nauczyć się mówić w swoim języku ...

1

Tablica przeglądowa jest tabelą zawierającą tylko ID, nazwę i opis jakiegoś przedmiotu/obiektu/rzeczy. ID to klucz podstawowy i auto_increment. Nic więcej.

0

Jednym ze sposobów korzystania z tabeli odnośników jest przechowywanie wartości: enum.

Powiedzmy, że mamy wyliczenie Status.

Zamiast oszczędności "Not Started", "In Progress", "Zakończony", "odesłanie" ... w każdym rekordu w bazie danych posiadamy Oszczędzasz całkowitą 1, 2, ... tylko.

Po stronie programowania ORM, podobnie jak Entity Framework, może z łatwością przekonwertować liczbę całkowitą do typu Enum.

W ten sposób wada jest wartością całkowitą, której nie można odczytać od strony bazy danych. W rozwiązaniu tego problemu, dodajemy Tabela przeglądowa jak

Id Status 
1 Not Started 
2 In Progress 
... 

aby nasze DBA może mieć słownika „odnośników”, pokazujący stan poprzez łączenie tekstu z tej tabeli.