データベース テーブルの正規化 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

データベース テーブルの正規化は、リレーショナル データベースの正規化とは異なります。この文脈では、テーブルの正規化とは、一致または重複する2つのPERIOD値または派生PERIOD値をCOALESCEすることです。一致または重複する2つの入力PERIOD値または派生PERIOD値に対する正規化操作の結果、2つの入力PERIOD値のリレーショナルUNIONである3番目のPERIOD値が生成されます。

Teradata Databaseでは、正規化操作に関するPERIOD列またはPERIODデータ型に対する参照は、PERIODデータ型列および派生PERIOD列に等しく適用されます。派生PERIODは、期間を構成するテーブル内の2つのDateTime列を識別します。派生PERIODは、実際のデータ型ではありません。

データベース テーブルはいずれも、正規化テーブルとして作成できます。テーブルを正規化するためにユーザーが実行する必要があるのは、テーブル内のPERIOD列を正規化対象の列として指定することだけです。このPERIOD列は、テーブルの正規化列と呼ばれます。正規化されたテーブルには、その正規化列の値が一致または重複する、同じデータ値を持つ行が2つ含まれることはありません。つまり、正規化されたテーブルで、新しい行が挿入されるか既存の行が更新されると、その行は、新しい行と同じ値を持ち、正規化列値が重複または一致する既存のテーブルの行すべてとCOALESCEされます。正規化されたテーブルとして定義されているテーブルでのすべてのDML更新は、そのテーブルにすでに存在する行で新規行を正規化します。

正規化を目的として、行の等価な値を決定するときにデータベースによって無視される必要がある一連のテーブルの列をオプションで指定できます。

例えば、次のCREATE TABLE文では、正規化の対象となるデータ値にdept_id列の値が含まれないNORMALIZEオプションを指定しています。

CREATE TABLE project (
  emp_id	       	INTEGER,
  project_name	 VARCHAR(20),
  dept_id	   	   INTEGER,
  duration	   	  PERIOD(DATE),
  NORMALIZE ALL BUT (dept_id) ON duration ON OVERLAPS);

DML文を使用した正規化テーブルの処理および更新の詳細について、 <Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。