11.16.1 繰返し列を含む表の効果と指定方法
HiRDBでは,複数の要素から構成される列(繰返し列)を含む表を定義できます。要素とは,繰返し列中で繰り返されている各項目のことをいいます。従来は,このような表を定義する場合,次の図のように作成する必要がありました。繰返し列を定義しない表の例を次の図に示します。
この二つの表をアクセスする場合,結合する必要があります。結合することで,SQLの構文が複雑になるなどのデメリットが発生します。そこで,繰返し列を含む表を作成することで,一つの表として作成できるため,結合が不要になります。
繰返し列を含む表の例を次の図に示します。
- 〔説明〕
-
「資格」,「家族」,「続柄」,「扶養」が繰返し列になります。
- 〈この項の構成〉
(1) 繰返し列を含む表を定義したときの効果
多値多重性のある表を行ごとにまとめた形で表現できます。このため,次に示す効果が期待できます。
-
複数の表の結合が不要になります。
-
重複する情報がなくなるため,ディスク容量を削減できます。
-
関連データ(繰返しデータ)が近くに格納されるため,別の表にするよりアクセス性能が優れています。
(2) 指定方法
繰返し列を指定するには,定義系SQLのCREATE TABLEの列定義にARRAYオプションを指定します。
繰返し列を含む表の定義例を次に示します。この定義例は図「繰返し列を含む表の例」に示した社員表の場合です。なお,社員表には,「続柄」,「扶養」に複数列インデクスが定義されているものとします。
- (例)
CREATE TABLE 社員表 (氏名 NVARCHAR(10), 資格 NVARCHAR(20) ARRAY[10], 性別 NCHAR(1), 家族 NVARCHAR(5) ARRAY[10], 続柄 NVARCHAR(5) ARRAY[10], 扶養 SMALLINT ARRAY[10]); CREATE INDEX 扶養IDX ON 社員表 (続柄,扶養);
注 扶養IDXは,社員表に付けたインデクス名です。
(3) 注意
-
次に示すデータ型に対して繰返し列を指定できません。
-
BLOB型
-
BINARY型
-
抽象データ型
-
-
クラスタキーを指定した列には,繰返し列を指定できません。
-
FIXを指定した場合,繰返し列を指定できません。
-
繰返し列に対して格納条件,ハッシュ分割,サプレスオプションを指定できません。
-
キーレンジ分割をする場合,境界値を指定する列に繰返し列を指定できません。
-
繰返し列には非ナル値制約を指定できません。