3.3.13 繰返し列
繰返し列とは,複数の要素から構成される列のことです。要素とは,繰返し列中で繰り返されている各項目のことです。繰返し列はCREATE TABLEで定義し,要素数も同時に定義します。ただし,要素数は後からALTER TABLEで増やせます。繰返し列を含む表を定義する利点を次に示します。
-
複数の表で重複している情報が多い場合に重複情報がなくなります。これによって,ディスク容量を削減できます。
-
複数の表の結合が不要になります。
-
関連データ(繰り返しデータ)が近くに格納されるため,別の表にするよりアクセス性能が優れています。
繰返し列を含む表の例を次の図に示します。なお,繰返し列を含む表については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
- 〈この項の構成〉
(1) 繰返し列の定義例
図「繰返し列を含む表の例」の繰返し列を含む表を定義するSQL文(CREATE TABLE)を次に示します。
CREATE TABLE 社員表 (氏名 NVARCHAR(10), 資格 NVARCHAR(20) ARRAY[10], 性別 NCHAR(1), 家族 NVARCHAR(5) ARRAY[10], 続柄 NVARCHAR(5) ARRAY[10], 扶養 SMALLINT ARRAY[10]);
(2) 繰返し列に対する操作
繰返し列を含む表に対して,HiRDBでは次に示す操作ができます。
- 構造化繰返し述語を使用した検索
-
繰返し列がある表の,添字が同じ要素で対応している複数の繰返し列に対して条件を指定して検索する場合,構造化繰返し述語を使用します。
- (例1)
SELECT 氏名 FROM 社員表 WHERE ARRAY(続柄,扶養) [ANY] (続柄='父' AND 扶養=1)
- 繰返し列の更新
-
更新する場合,次に示す三つの方法があります。
-
既存の要素を更新する(UPDATE文のSET句)
-
新たに要素を追加する(UPDATE文のADD句)
-
既存の要素を削除する(UPDATE文のDELETE句)
繰返し列がある表を更新する場合,繰返し列名 [ {添字 | *}]で更新する繰返し列の要素を指定します。
- (例2)既存の要素を更新する場合
UPDATE 社員表 SET 資格[2]=N'英語検定1級' WHERE 氏名=N'中村和男'
- (例3)新たに要素を追加する場合
UPDATE 社員表 ADD 資格[*]=ARRAY[N'データベース'] WHERE 氏名=N'中村和男'
- (例4)既存の要素を削除する場合
UPDATE 社員表 DELETE 資格[2] WHERE 氏名=N'中村和男'
-
- そのほかの繰返し列に対する操作
-
SQL文中で繰返し列を指定する場合は,繰返し列名[添字]で指定します。
繰返し列を含む表の操作については,マニュアル「HiRDB UAP開発ガイド」を参照してください。