web-dev-qa-db-ja.com

ルックアップテーブルとは何ですか?

作成したDBのデータベースダイアグラムをヘッドデータベース担当者に渡したところ、彼女は特定のテーブルの名前を変更することを提案するメモを大量に付けて、ルックアップテーブルであることを明確にしました(テーブルの先頭に「lu」を追加します)名)。

私の問題は、これらがルックアップテーブルと見なされるものの定義に適合しないことです。ルックアップテーブルは、基本的に関係を定義しないオプションのセットであると常に考えてきました。例:

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

私の職場のデータベース担当者は、あるテーブルを別のテーブルにマップするIDだけを複数のテーブルの名前をルックアップテーブルとして変更することを提案しています。例(以下のLocation_QuadMap):

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

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

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

彼女が図を読み違えたと思うのは安全ですか、それとも私が知らない別の定義がありますか?

36
Abe Miessler

そこにあるものは junction table と呼ばれます。次の名前でも知られています。

  • 相互参照表
  • ブリッジテーブル
  • 参加表
  • 地図表
  • 交差点表
  • リンクテーブル
  • リンクテーブル

しかし、この目的で使用される「ルックアップテーブル」という用語を見たことはありません。

35
Mark Byers

あなたの戦いを選びます、しかし、私は彼らが1対多および多対多の関係でも同じ規則です。外部キーの関係は、「ルックアップ」テーブルが関係していることを意味するように見えます。

それが他のデータベースの命名規則である場合、私は運を押しません。

21
OMG Ponies

ルックアップテーブルは通常、何かの「マスターリスト」として機能するテーブルであり、他の用途で使用する識別子(id列など)のexachangeでビジネスキー値(「Make」など)を検索するために使用します。テーブルの外部キー列。

基本的に、あなたは「ルックアップ」する何かを持ち込み、それを他の何かと交換します。

一方、location_quadmapは、他の人が既に述べたように、2つのエンティティ間に多対多の関係がある場合に使用されるブリッジテーブルです。これをルックアップテーブルと呼べば、どのテーブルもルックアップテーブルと呼ぶことができます。これらのテーブルには他のテーブルの識別子のみが含まれているため、最初に1つのテーブルのIDを検索し、ブリッジテーブルで一致するIDを検索し、次に一致する行を検索する必要があります3番目の表?この用語を少し使いすぎているようです。

12

マーク・バイヤーズには、そのテーブルの正しい定義があります。基本的に交差テーブル。データベースの教科書をご覧ください。

しかし実際には、私は多くのDBA /アーキテクツと協力しており、ほとんどの人は物事を行うための独自のスタイルを発明しており、他には何も聞いていません。インデントルール、SQLステートメントのケース、テーブルの命名規則(本当に悪いものであっても)、アーカイブ戦略など。あなたはそれが交差テーブルであることを言及することができ、適切な文献を指していますが、最終的に彼女がそれをMyStupidlyLongAndPointlessPrefixForTablesBecauseICan_Lookup_Location_Quadmapと呼びたいなら、あなたは何もできないと主張します。

だから彼女にそれを指摘しようとするが、彼女がそれとうまくいかないなら、それをあまり真剣に受け取らないでください...

私は何か他のことを考えました。ルックアップテーブル(定義)は、一般にコードテーブルとも呼ばれます。そのため、彼女はインターセクションテーブルルックアップテーブルおよびルックアップテーブルコードテーブルを呼び出すことができます。その場合、あなたは彼女の言語を話すことを学ぶ必要があります...

4
Cervo

ルックアップテーブルという用語を、多対多の関係の中間にあるテーブルとして使用する人もいます。

4
Justin Niessner

ルックアップテーブルの用途の1つは、enum値を保存することです。

Status列挙型があるとします。

データベースのすべてのレコードに「未開始」、「進行中」、「完了」、「送信済み」などを保存する代わりに、整数1、2、...のみを保存します。

プログラミング側では、Entity FrameworkのようなORMは、基になる整数を列挙型に簡単に変換できます。

この方法での欠点は、整数値がデータベース側から読み取れないことです。この問題を解決するには、ルックアップテーブルを追加します

Id   Status
1    Not Started
2    In Progress
...

DBAが「ルックアップ」する辞書を持ち、このルックアップテーブルと結合してステータステキストを表示できるようにします。

3
Blaise

ルックアップテーブルは、ID、名前、およびサブジェクト/オブジェクト/物の説明のみを含むテーブルです。 IDは主キーであり、auto_incrementです。他に何もありません。

3
user3059225