!--a11y-->

R/3 システムでは、長期間のデータはリレーショナルデータベーステーブルに格納されます。リレーショナルデータベースモデルでは、実世界はテーブルで表されます。テーブルは行および列 ( 項目) で構成される 2D マトリクスです。テーブルの各行を一意に識別できる項目の最小の組合せはキーと呼ばれます。各テーブルは少なくとも 1 つのキーを持つ必要があり、また各テーブルは一次キーとして定義された 1 つのキーを持っています。テーブル間の関係は外部キーによって表されます。
SQL ( 構造化照会言語) とは主として、リレーショナルデータベースにアクセスするために標準化された言語です。SQL は以下の 3 領域に分類できます。
キ データ操作言語 (DML)
データベーステーブルのデータ読込および変更用の命令
キ データ定義言語 (DDL)
データベーステーブルのデータ登録および管理用の命令
キ データ制御言語 (DCL)
権限および整合性チェック用の命令
各データベースには、SQL 命令を使用したデータベーステーブルへのアクセスを可能にするプログラミングインタフェースがあります。これらのプログラミングインタフェースの SQL 命令は完全には標準化されていません。特定のデータベースシステムにアクセスするには、そのシステムの文書で利用可能な SQL 命令一覧とそれらの正しい構文を参照する必要があります。
さまざまなデータベース間で SQL 構文に違いがあっても、使用するデータベースシステムに R/3 システムが依存しないようにするには、アプリケーションサーバ上の各ワークプロセスがデータベースインタフェースを備えている必要があります。このインタフェースを使用して、R/3 システムはデータベースと通信できます。データベースインタフェースによって、R/3 システムからのすべてのデータベース依頼は、データベースシステムに適切な標準 SQL 命令に変換されます。これを実行するために、データベースシステム間の相違を、残りのデータベースインタフェースからシールドするデータベース固有のコンポーネントが使用されます。R/3 システムをインストールする際に適切なレイヤを選択します。
プログラムからデータベースにアクセスするには、オープン SQL を使用する方法とネイティブSQL を使用する方法の 2 とおりがあります。
オープン SQL 命令は、ABAP に完全に統合された標準SQL のサブセットです。これらのオープン SQL 命令によって、R/3 インストールが使用しているデータベースシステムに関係なく、データにアクセスすることが可能になります。オープン SQL は標準 SQL の一部であるデータ操作言語 (DML) で構成されます。つまり、データの読込 (SELECT) および変更 (INSERT 、UPDATE 、DELETE) が可能です。
さらにオープン SQL は、標準 SQL では提供されない、データベースアクセスの簡易化や高速化のための命令を、他の ABAP 構成との連携により提供します。また、テーブルをいくつかアプリケーションサーバにバッファして、超過のデータベースアクセスを保存することもできます。その場合は、データベースインタフェースによりバッファとデータベースの比較が行われます。バッファの一部は現在のワークプロセスのワークメモリに保存され、一部はアプリケーションサーバ上のすべてのワークプロセス用の共有メモリに保存されます。R/3 システムが複数のアプリケーションサーバに分散されている場合は、さまざまなバッファ内のデータはバッファ管理によって設定されたインターバルで同期化されます。データベースをバッファする場合は、バッファ内のデータが最新データとはかぎらないことに注意してください。このため、頻繁に変更されないデータにだけバッファを使用してください。テーブルをバッファリング可能にするかどうかは、ABAP ディクショナリの定義に指定します。
ネイティブ SQL は ABAP に大まかに統合されているだけなので、それぞれのデータベースシステムのプログラミングインタフェースに含まれるすべての機能にアクセスすることが可能です。オープン SQL 命令とは異なり、ネイティブ SQL 命令はチェックも変換も行われませんが、データベースシステムに直接送信されます。ネイティブ SQL を使用する場合は、データベースに依存するレイヤの機能は最小になります。ネイティブ SQL を使用するプログラムは、そのプログラムが書き込まれたデータベースシステムに固有のものです。R/3 アプリケーションを書き込む場合は、可能なかぎりネイティブ SQL を使用しないようにしてください。ただし、R/3 ベーシスシステムでは部分的に、たとえば ABAP ディクショナリでのテーブル定義の登録や変更にネイティブ SQL が使用されています。
ABAP ワークベンチの一部である ABAP ディクショナリによって、データベーステーブルの登録および管理が可能になります。オープン SQL には標準 SQL の DDL 部分の命令は含まれません。通常のアプリケーションプログラムでは、固有のデータベーステーブルの登録や変更を行いません。
ABAP ディクショナリでは、オープン SQL の DDL 部分を使用してデータベーステーブルの登録および変更を行います。また、データベースでの ABAP ディクショナリの管理も行います。ABAP ディクショナリには R/3 システムのすべてのデータベーステーブルのメタテキストが含まれます。ディクショナリに表示されるのは、ABAP ディクショナリを使用して登録されたデータベーステーブルだけです。オープン SQL 命令は、ABAP ディクショナリにあるテーブルにのみアクセスできます。
標準 SQL の DCL 部分は R/3 プログラムでは使用されません。R/3 システム内のワークプロセスへは、全権限を持つユーザとしてデータベースシステム上でログオンします。プログラムまたはユーザのデータベーステーブルの読込権限または変更権限は、R/3 システム内で R/3 権限コンセプトを使用して管理されます。同様に、トランザクションは R/3 ロックコンセプトを使用してそのデータの整合性を保持する必要があります。追加情報については、権限コンセプト および プログラミングデータベース更新を参照してください。