情報処理学会 インタラクション 2019
IPSJ Interaction 2019

2B-42
2019/3/6

データベース学習のための関係代数アニメーション
佐々木 透1,a)

寺田 実1,b)

概要：現代のリレーショナルデータベースは問い合わせ言語として SQL を用いるソフトウェアの形式で存在しているが, 情報工学においてこのデータベースを理論的に扱う関係代数という分野が存在する. 関係代数が実用的に用いられることはないが, データの表現, 操作, 正規化理論などを離散数学的に扱うもので情報系の大学では講義のカリキュラムとして組込まれている場合が多い. 本研究では, 関係代数におけるデータ表現形式の可視性の高さに着目し, インタラクティブに関係代数のデータ操作, 及び正規化の可視化をするソフトウェアを実装した.

1. 背景

いう属性を持ち, １つの行はその２属性の直積の部分集合である関係によって数学的に表現される.

意味のあるデータを表現する方式としては JSON や XMLなどの形式が存在するが, 最も実用的に用いられている形

2.2 関係代数の演算式はリレーショナルデータベースである. リレーショナル

テーブルを操作する言語はいくつか種類が存在するが,データベースでは図 1 のように, 表現したいデータを有限コッドは関係代数においてテーブルを操作するための８演の属性の組み合わせからなる項として 1 行に記述するテー

算を [1] の中で定義し, 特に次の 5 つの演算と同等の能力をブル形式という表現方法を導入しており, 極めて可視性が持ち合わせている言語をリレーショナル完備であると定義高いものとなっている. 情報工学においてリレーショナルしている.

データベースを扱う理論は関係代数と呼ばれ, 現代のデー• 和演算:2 つのテーブルのデータの和集合を返す

タベースで用いられるデータ操作やデータベースの正規化• 差演算::2 つのテーブルのデータの差集合を返すを数学的に厳密に議論するものであり, 情報系の大学で講• 直積演算:2 つのテーブルのデータの直積を返す

義のカリキュラムとして組み込まれていることが多い.

• 選択演算:1 つのテーブルについて, 指定した条件に合関係代数の学習過程においてテーブル同士の演算に関する項目が存在し, 講義の形式については参考書やスライド,板書を用いるなど静的に視覚化したテーブルが用いられて致するデータを取り出す• 射影演算:1 つのテーブルについて, 指定した列のみを切り出したテーブルに分解するいる. よって学習者は演算前のテーブルと演算後のテーブ

上記以外に共通演算, 結合演算, 商演算の 3 つの演算も定義

ルを見て演算内容をイメージの中で補完するという学習方されているが, 挙げた５つの演算を組み合わせて実現が可法を強いられる. この問題を解決するために本研究では関能なので説明は省略する. また商演算のみ, 演算としての係代数の学習支援を目的とし, テーブルの演算内容を動的重要度が低いために本研究では実装の対象外としている.

なアニメーションによって可視化するソフトウェアを実装

関係代数演算は全てテーブルに対する演算であり, 式の評した.

価結果もテーブルであるというような再帰性がある.

2. 関係代数
2.1 テーブル表現
関係代数とはエドガー・F・コッドによって確立され, 集合論における直積を用いてデータを表現する理論体系である. 例では COURSES というテーブルは ID と NAME と1a)b)電気通信大学
s1731077@edu.cc.uec.ac.jp
terada.minoru@uec.ac.jp© 2019 Information Processing Society of Japan

図 1

関係代数におけるテーブル表現の例

626

情報処理学会 インタラクション 2019
IPSJ Interaction 2019

2B-42
2019/3/6

2.3 関数従属性
ある属性 A の持つ値が決定されると, 別の属性 B の値も決定されるような従属性が存在する場合, B は A に関数従属すると表現する. 従属される属性は単一でなくてはならないが, 従属させる属性は複数の属性の組み合わせでもよい. 関数従属性は, データベースの正規系を定義する際に用いられる概念である.

3. 関連研究
関係代数の視覚化に関する研究はないものの, SQL によるデータベースの動きを学習支援としてアニメーション化するという研究はいくつか存在する. Cembalo らは大学生を対象として SQL の構文の教育支援を目的とした SAVI[2]を実装した. SAVI はデータベース上のテーブルから SQLの SELECT 文によって取得したい結果のテーブルが取り出される様子をアニメーションによって可視化し, SELECT文の WHERE 句, JOIN 句, GROUP BY 句をサポートしている. Kristin は SAVI 同様に SQL の理解支援を目的として SELECT 文のアニメーションを行う viSQLizer[3] 実装した. [3] ではデータベースの講義の担当講師へ事前アンケートを実施しており, その中でアニメーションによる可視化ツールを併せて学習に用いることは有効であるという回答を得ている. 評価実験では講師が参考書を用いて講義をしたグループと, viSQLizer を用いて独学したグループに SELECT 文のみを対象とした SQL のテストを実施し,平均点で 1%程上回っている.
本研究は SQL ではなく関係代数の理解を目的としているが, SQL と関係代数の演算の能力は関係代数の方が高い.

SAVI が実装している演算能力は 5 つの関係代数演算の内直積演算, 選択演算, 射影演算, の 3 つ, viSQLizer は 2 つと, データベースに対する操作の能力はリレーショナル完備ではない. また, 本研究ではテーブル内の属性同士の従

図 2 viSQLizer[3] による SELECT 文のアニメーション例

式を入力として受け付け, 実行ボタンを押すと入力された代数式を構文解析し, (C) のアニメーション描画エリアにテーブル同士の演算を描画する. 関係代数は演算結果自体がテーブルであるという再帰性があるので, 演算結果のテーブルをさらに別の演算に用いることも可能である.

4.1.1 ログ出力コンソール
関係代数エリアの下部の (B) にログを出力するコンソールを設置してある. ここには主に次のようなログやエラーを出力する.

• 今までに実行した関係代数の演算式• 関係代数式のパースエラー出力• 演算の条件を満たしていないテーブル同士の演算を行った場合のエラー出力

属関係を設定することができ, 単にデータベースの動きの学習ではなく正規化の学習支援に用いることが可能である.

4. 提案システム
本システムは起動時に以下の 2 つのウィンドウが立ち上がる. 起動には Java 7.0 の実行環境が必要.

• アニメーションウィンドウ• テーブル一覧ウィンドウ
また更にアニメーションウィンドウは 3 つのエリアに分割される• 関係代数式入力エリア• アニメーション描画エリア• ログ出力コンソール
4.1 アニメーションウィンドウ
図 3 の (A) に配置している関係代数式入力エリアは数© 2019 Information Processing Society of Japan

図 3アニメーションウィンドウ627

情報処理学会 インタラクション 2019
IPSJ Interaction 2019

2B-42
2019/3/6

図 4 テーブル一覧ウィンドウ• テーブルを分解した時に分解後のテーブルが正規系になっているか出力

4.2 テーブル一覧ウィンドウ
図 4 に示すテーブル一覧ウィンドウでは, 現在演算に使えるテーブルを一覧表示する. 主キーはヘッダー色を濃く

図 5 テーブル追加ウィンドウは半角アルファベットと数字の組み合わせとする. 例ではテーブル名として”R1”という名前を付けている.

5.3.2 属性 (テーブルヘッダー)

表示し, 属性同士の従属関係は矢印で表す. 初回起動時にテーブルヘッダーは属性名をカンマ区切りで記述する.

は開発者が用意したテーブルを一覧表示するが, アニメー命名規則はテーブル名と同様. 例では 5 つの属性を定義しションウィンドウにて新しい演算が行われた場合や, 学習ている.

者が新たにテーブルを定義した場合は一覧ウィンドウを更

5.3.3 従属関係の記述

新して新規追加されたテーブルを表示する.

5. 使い方5.1 関係代数式の入力

テーブルヘッダーに記述した属性の内, 従属させるカラムと従属するカラムをそれぞれ記述する. 例では, ”species”が”ID”に関数従属するという従属性を定義している.

5.3.4 データ

ユーザはテーブル一覧画面に存在するテーブルから演算テーブルの保持するデータをカンマ区切りで入力する.に使いたい任意のテーブルを選んで関係代数式を記述する.

複数のデータを入力したい場合は改行して同じように行を入力後に実行ボタンを押すとアニメーション描画エリアに入力する. 例では, 3 つのデータを入力している.

テーブルの初期状態から演算結果の状態までを可視化するアニメーションが描画され, 以降ユーザによる操作が発生するまで無限にループする.

5.4 アニメーションのリセット
演算やテーブルの追加を行って学習を進めていると不要な結果テーブルやログがコンソールエリアに蓄積されてゆ

5.2 アニメーションの実行制御
アニメーションの実行中, ユーザは停止ボタンを押下しく. その場合はリセットボタンを押すことで開発者が用意したデフォルトテーブル以外のテーブルと, ログを削除でて任意の時点で停止させることが可能である. さらに停止きる.

状態でスクロールバーをドラッグ操作することによりアニ6. 評価実験

メーションを制御し, 再生や逆再生が出来る.
学生を被験者とする評価実験を予定している. 被験者は

5.3 テーブルのユーザ定義

本システムを用いて関係代数と正規化について学習したグ

ユーザは開発者がデフォルトで用意したテーブルのほかループと, 本学のデータベース論の講義で用いられているに, 自分でテーブルを定義することが可能である. add ボ

参考書 [4] を用いて学習したグループに分け, こちらが用意タンを押下することにより, 図 5 に示すテーブルを追加すする問題を解いて正答率を比較する.

る GUI ウィンドウが立ち上がり, ユーザはテーブル名, 属

問題は関係代数, 正規化をどちらもデータベーススペシャ性, 従属性, テーブルの持つデータを記述して定義すること

リストの午前 II 問題から出題する予定である.

が出来る.

7. まとめ5.3.1 テーブル名テーブル名を入力する. 構文解析の都合上, テーブル名

リレーショナルデータベースの学習支援は SQL に関わる研究が大半で関係代数に焦点があてられたものはほぼ存© 2019 Information Processing Society of Japan628

情報処理学会 インタラクション 2019
IPSJ Interaction 2019

図 62B-42
2019/3/6

射影演算 R1[genus,age,ID] のアニメーション例

在しない. 関係代数演算は実用的に用いられることはない
が, 情報工学系の学部で講義として扱う大学は多く, 特に正規化に関する厳密な理論の習得は現代のデータベースの設計に大いに役に立つ.

8. 今後の課題
使いやすさと学習範囲の 2 つの観点から, 今後に追加が望ましい機能として以下のものが考えられる. まず, 使いやすさに関して, 学習者が自分でテーブルを定義するための機能を提供しているが, 学習の都度入力させるのは不要な時間を費やしてしまう. これを解決するために, 予め外部ファイルに任意のテーブルを保存して読み込ませる等の機能が挙げられる. 学習に関して, 本システムは関数従属性の実装までしているが関係代数には多値従属性という概念が存在し, これを実装すればさらに高次の正規系を学習範囲とすることができる.
参考文献
[1]

[2]

[3]

[4]

E. F. Codd(1972), “Relational Completeness of Data
Base Sublanguages” Database Systems:65-98, PrenticeHall and IBM Research Report RJ 987, San Jose, California.
Maurizio Cembalo, Alfredo De Santis, Umberto Ferraro
Petrillo, “SAVI: a new system for advanced SQL visualization” SIGITE ’11 Proceedings of the 2011 conference on Information technology education,Pages 165170, West Point, New York, USA ― October 20 - 22,2011.
Folland, Kristin Annabel Torjussen(2016) “viSQLizer:
An interactive visualizer for learning SQL” (Master’sthesis). Norwegian University of Science and Technology(NTNU), Norway.
増永良文 (2015). リレーショナルデータベース入門 [新訂版]. サイエンス社.

© 2019 Information Processing Society of Japan629