Forguncyでは、Forguncy内部で保持する内部データベース(SQLite)を使用する方法とSQL Server、Oracle Database、MySQL、PostgreSQL、ODBCデータソースなどの外部データベースを使用する2つの方法を提供しています。アプリケーションの規模や要件に応じて適切なデータベースを選択してください。
内部データベース
内部データベースは小規模なアプリケーションやプロトタイプ開発に向いています。
扱うデータ量が少ない
同時実行性が高くない
外部ツールを使用したバックアップやメンテナンスの必要がない
プロトタイプなどの評価用アプリケーション
一つのアプリケーションからのみデータを利用する場合
外部データベース
外部データベースは、パフォーマンス、メンテナンス性、拡張性の点で内部データベースより優れています。
データ量が多く、同時実行性が高い大規模プロジェクト
既存データベースに接続しアプリケーション開発を行う場合
複数のアプリケーションから共通のデータに対して操作を行う場合
アプリケーションとは別でデータベースを管理したい場合
複数のアプリケーションから共通のデータを利用する場合
また、外部データベース(リンクテーブル)を使用する場合、本番環境ではデータベースへのアクセス権限を厳密に管理することを推奨します。データベースソフトウェアにより管理方法は異なりますが、以下を参照してください。
共通
データベースサーバーとForguncy Serverを同じイントラネット環境下に配置します。
最上位の管理者ユーザー(MySQLの場合はroot、PostgreSQLの場合はpostgresなど)の使用は避け、必要な権限のみを付与したForguncyアプリケーション用のデータベースユーザーを作成します。
Microsoft SQL Server
Windows認証の設定が可能な場合、データベースへのアクセスには、ユーザー名とパスワードによるアクセスではなく、Windows認証の使用を推奨します。
アプリケーションの作成において、ページよりも先にデータベースの設計から始めることを推奨します。適切に設計されたデータベースは、データの整合性や可用性を確保でき、また拡張性やメンテナンス性が高くなることが期待できます。
Forguncyアプリケーションにおいて新規作成するテーブルは、Forguncyとして適切な構造になるように先に内部データベースで作成、作成後に外部データベース(リンクテーブル)に変換することを推奨します。
参考:外部データベースへの変換
リンクテーブルとして接続するテーブルはデータの整合性やセキュリティの点からも必要最低限に留めます。
テーブル構造の変更(フィールドの追加、フィールドの削除など)が必要な場合、Forguncy Builder内のリンクテーブルのテーブル設定から[構造変更の許可]-[データベースやテーブルの構造変更をForguncyに許可する]オプションを有効にします。
各データベースソフトウェアが提供するツールにより、テーブル構造やデータが変更された場合、Forguncy Builder内のリンクテーブルを[最新の情報に更新]オプションで最新のデータに更新します。なお、データ型に変更が加えられた場合(テキスト長の変更を含む)、更新後に列に対して[データ型を再取得]オプションを実施します。
テーブルやビューに主キーを設定します。主キーが設定されていない場合、データの更新やテーブルデータの関連付け設定、データアクセス権限などの機能が正しく動作しません。
データベース制約を設定し不正なデータの挿入や変更を防ぎます。
データベース制約とは、データの整合性を確保するために、データベース内でルールや制限を定義することです。一般的な制約には、主キー制約、一意制約、必須制約、外部キー制約(テーブルの関連付け設定時)などがあります。
主キー制約
内部データベースの場合、既定値で「ID」フィールドが主キーになります。リンクテーブルの場合、主キーが設定されているテーブルを使用してください。なお、主キーには鍵アイコンが表示されます。
一意制約
一意のフィールドやフィールドの組み合わせでは、[一意]オプションを有効にします。
必須制約
必須となるフィールドでは、[必須]オプションを有効にします。
外部キー制約
関連付けられたフィールドに対し、適切な外部キー制約を設定します。
アプリケーションを発行する場合は、稼働しているアプリケーションや外部システムに影響を及ぼさないように慎重に行う必要があります。
リンクテーブルを使用している場合、テスト環境のデータベースと本番環境のデータベースをそれぞれ用意します。開発中は本番環境データベースに影響を与えないようにテスト環境データベースを使用します。
テーブル構造に変更があるアプリケーションを再発行する場合、[構造変更の反映]オプションを有効にすることを推奨します。サーバー上で保存されているデータは保持したまま、テーブル構造をサーバー環境に反映させることができます。
本番環境に発行する前に、アプリケーションやデータベースのバックアップが存在することを確認します。
SQL文による直接的なデータベース操作は[テーブルデータの更新]コマンドと比べ拡張性が高くパフォーマンスにも優れています。一方で、専門的な知識も必要になるため、以下の点に注意してSQL文によるデータベース操作を行うことを推奨します。
SQL文の作成やSQL文を使用したバッチ処理の実行はSQLを理解した技術者またはデータベース管理者のような知識のある方が行うか、その方によるレビューを通して行うことを推奨します。特にバッチ処理は暗黙的に実行されることが多いため、誤りに気付くのが遅れやすく、誤ったSQL文を実行するとデータの破損やパフォーマンスの低下を招く恐れがあります。
バッチ処理によるデータベース操作は、大量データの処理などのパフォーマンス向上が期待できます。
外部データベースにビューやストアドプロシージャーを用意することで、複雑なクエリーやデータ処理のパフォーマンスの向上が期待できます。
SQL文作成時は、各データベースソフトウェアが提供するドキュメントを参照し作成してください。
ユーザー情報(氏名、メールアドレス、拡張属性など)を取得する場合は、ユーザー管理ビュー使用します。
データベース設計の変更が必要になった場合は、開発リーダーまたはデータベース管理者によるレビューを実施し、速やかに開発メンバーに共有することを推奨します。
テーブルデータの外部キーフィールドの型を、関連付けられたテーブルのフィールドの型と一致させます。フィールドの型が異なると、暗黙的な型変換によるパフォーマンス低下を招く恐れがあります。