## データの作成、取得、更新、削除

この節では、リレーショナル DAS を使用してリレーショナルデータベースの データを作成し、取得し、更新して削除する方法を説明します。 以下の例のほとんどで使用しているのは、3 つのテーブル (company、department、employee) からなるデータベースで、 会社の中には部署が存在し、部署には従業員が所属しているという構造です。 これは、SDO の資料中の例でも使用されています。 » Service Data Objects specification の例か、SDO 拡張モジュールのマニュアルの 例 を参照ください。

リレーショナル DAS は、リレーショナルデータベースの定義 およびそれをどのように SDO に関連付けるかを定義したメタデータを 使用して作成されます。これ以降で、メタデータの構造 およびリレーショナル DAS の作成方法について説明します。 以下の例では、インクルードされた PHP ファイル内に メタデータが存在するものとします。

以下で説明する例およびその他の例は、リレーショナル DAS パッケージの Scenarios ディレクトリ内に存在します。

メタデータに間違いがあった場合、あるいはデータベースに対する SQL 文の実行時にエラーが発生した場合には、リレーショナル DAS は例外をスローします。簡潔に説明するため、以下の例では リレーショナル DAS のコールの際の try/catch ブロックの使用を 省略しています。

これらの例は、SDO が想定している使用法とは 以下の 2 つの点で大きく異なります。

まず、ここではデータベースに対するすべての操作を ひとつのスクリプト内で完結させています。これは現実的ではありませんが、 リレーショナル DAS の使用法を説明するという点でこの方法を選択しました。 通常は、データベースに対する処理はいくつかに分割され、そのたびに PHP セッションへのデータグラフの保存やそこからの引き出しが発生します。 これにより、アプリケーションがユーザーと対話的なやりとりをすることになるでしょう。

2 番目に、データベースに対するすべてのクエリがハードコーディングされており、 変数の置換を使用していません。例の中で使用するのは安全な executeQuery() コールであり、 例について説明するためにこのようにしています。 しかし、実際に使用する場合は、すべての SQL 文が安全であるとは限りません。 SQL クエリ内での変数の置換を安全に行い、SQL インジェクションを防ぐには、 executePreparedQuery() でプレースホルダを含むプリペアドステートメントを使用し、 置換する値のリストを渡します。