Что такое справочная таблица? - PullRequest
35 голосов
/ 06 августа 2010

Я только что дал диаграмму базы данных для БД, которую я создал, нашему руководителю базы данных, и она написала на нем кучу примечаний, предлагающих мне переименовать определенные таблицы, чтобы было ясно, что они являются таблицами поиска (добавьте «lu» в началоимени таблицы).

Моя проблема в том, что они не соответствуют определению того, что я считаю поисковой таблицей.Я всегда рассматривал таблицу поиска как набор опций, которые не определяют никаких отношений.Пример:

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

Сотрудник базы данных на моей работе предлагает переименовать несколько таблиц, которые являются просто идентификаторами, отображающими одну таблицу в другую в качестве справочных таблиц.Пример (Location_QuadMap ниже):

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

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

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

Можно ли предположить, что она неправильно прочитала диаграмму, или есть другое определение, о котором я не знаю?

Ответы [ 7 ]

34 голосов
/ 06 августа 2010

То, что у вас есть, называется соединительной таблицей .Он также известен как:

  • таблица перекрестных ссылок
  • таблица мостов
  • таблица соединений
  • таблица карт
  • пересечениетаблица
  • таблица ссылок
  • таблица ссылок

Но я никогда не видел термин "таблица поиска", используемый для этой цели.

21 голосов
/ 06 августа 2010

Выберите ваши битвы , но я бы попросил человека уточнить соглашение об именах, видя, что они предложили использовать одно и то же соглашение для одного ко многим и многихотношения ко многим.Похоже, что любое отношение с внешним ключом означает, что в нем задействована таблица «поиска».

Если это соглашение об именах для других баз данных, я бы не стал испытывать судьбу.

12 голосов
/ 06 августа 2010

Таблица поиска - это, как правило, таблица, которая действует как «основной список» для чего-либо, и вы используете ее для поиска значения бизнес-ключа (например, «Make») в exachange для его идентификатора (например, столбца id) для использования.в столбце внешнего ключа некоторой другой таблицы.

По сути, вы приходите с чем-то, чтобы «посмотреть» и обменивать это на что-то другое.

Карта location_quadmap с другой стороны - это таблица-мост, которая, как уже говорили другие, используется, когда у вас есть отношения «многие ко многим» между двумя объектами.Если вы называете это справочной таблицей, то я бы сказал, что любую таблицу можно назвать справочной таблицей.Эти таблицы содержат только идентификаторы для других таблиц, поэтому вам нужно сначала найти идентификатор для одной таблицы, найти идентификаторы, которые совпадают в таблице мостов, а затем найти соответствующие строки в3-й стол?Кажется, этот термин заходит слишком далеко.

4 голосов
/ 06 августа 2010

Марк Байерс имеет правильное определение для этой таблицы.В основном это таблица пересечений.См. Любой учебник по базам данных.

Но на самом деле я работал со многими администраторами баз данных / архитекторами, и большинство из них придумывают свой собственный стиль ведения дел и не открыты для прослушивания чего-либо еще.Такие вещи, как правила отступов, регистр для операторов SQL, соглашения об именах для таблиц (даже очень плохих), стратегии архивирования и т. Д. У вас, по сути, нет выбора, если они контролируют базу данных.Вы можете упомянуть, что это таблица пересечений, указать на соответствующую литературу, но, в конце концов, если она захочет назвать ее MyStupidlyLongAndPointlessPrefixForTablesBecauseICan_Lookup_Location_Quadmap и настаивает на том, что вы ничего не можете сделать., но если она не соглашается с этим, не принимайте это слишком серьезно ...

Я просто подумал о чем-то другом.Таблицы поиска (наше определение) также часто называют таблицами кода.Поэтому она может вызывать таблицы поиска таблиц пересечений и таблиц поиска.В этом случае вам, возможно, придется научиться говорить на ее языке ...

4 голосов
/ 06 августа 2010

Некоторые люди используют термин «Таблица поиска» в качестве таблицы, которая находится в середине отношения многих ко многим.

3 голосов
/ 23 октября 2015

Таблица поиска - это таблица, которая содержит только идентификатор, имя и описание какого-либо предмета / объекта / предмета.ID - это первичный ключ и auto_increment.Ничего другого.

2 голосов
/ 02 февраля 2018

Одно из применений справочной таблицы - сохранить enum значения.

Скажем, у нас есть Status перечисление.

Вместо сохранения «Не начато», «Выполняется», «Завершено», «Отправлено» ... в каждой записи в базе данных мы сохраняем только целое число 1, 2, ... только.

На стороне программирования ORM-подобный Entity Framework может легко преобразовать базовое целое число в тип Enum.

Таким образом, недостатком является целочисленное значение, недоступное для чтения со стороны базы данных. Для решения этой проблемы мы добавляем Таблица поиска как

Id   Status
1    Not Started
2    In Progress
...

Так что наш администратор базы данных может иметь словарь для «поиска», показывающий текст статуса, соединяясь с этой таблицей поиска.

...