データベース
ConnollyとBeggは、データベース管理システム(DBMS)を「ユーザーがデータベースを定義、作成、保守、およびアクセスを制御できるようにするソフトウェアシステム」と定義している。DBMSの例として、MySQL、PostgreSQL、Microsoft SQL Server、Oracle Database、Microsoft Accessがあげられる。
DBMSの頭文字は、基盤となるデータベースモデルを示して拡張されることがあり、リレーショナル型はRDBMS、オブジェクト(指向)型(英語版)はOODBMS、オブジェクトリレーショナル型はORDBMSと呼ばれる。また、分散型データベース管理システムを表すDDBMSなど、他の特性を表すように拡張することができる。
DBMSが提供する機能は非常に多様である。中心的な機能は、データの保存、検索、更新である。コッドは、本格的な汎用DBMSが提供すべき機能およびサービスとして、次のようなものを提案した。
データの保存、検索、更新
メタデータを記述した、ユーザーがアクセス可能なカタログまたはデータディクショナリ
トランザクションと並行処理のサポート
アプリケーションのデータベースを設計したら、次の段階はデータベースの構築である。通常、この用途で用いるために、適切な汎用DBMSを選択することができる。DBMSは、データベース管理者が必要なアプリケーションのデータ構造をDBMSの各データモデルに準じて定義するために必要なユーザーインタフェースを提供する。その他のユーザーインタフェースは、必要なDBMSパラメータ(セキュリティ関連、ストレージ割り当てパラメータなど)を選択するために用いられる。
データベースの準備が整うと(データ構造およびその他の必要なコンポーネントがすべて定義される)、通常は、運用を開始する前にアプリケーションの初期データを入力する(データベースの初期化は、通常は別プロジェクトとされ、多くの場合、一括挿入をサポートする専用のDBMSインタフェースを用いる)。場合によっては、アプリケーションのデータを持たない状態でデータベースが稼働し、その運用を経てデータが蓄積されることもある。
データベースを作成し、初期化し、データを入力した後は、データベースを維持する必要がある。たとえば、より良い性能を得るために、さまざまなデータベース・パラメータを変更し、データベースをチューニング(英語版)する必要があるかもしれない。あるいは、アプリケーションの機能を追加するために、アプリケーションのデータ構造を変更または追加し、新しい関連アプリケーションプログラムを作成するかもしれない。
あるDBMSで構築されたデータベースは、別のDBMSに移植できない(つまり、別のDBMSでは実行できない)。しかし、状況によっては、あるDBMSから別のDBMSにデータベースを移行(database migration)するのが望ましい場合がある。その理由は、主に経済的(DBMS によって総所有コスト(TCO)が異なる)、機能的、および運用的(DBMSによって機能が異なることがある)である。移行には、あるDBMSの種類から別の種類へデータベースを変換することも含まれる。この変換では、(可能であれば)データベース関連のアプリケーション(つまり、関連するすべてのアプリケーションプログラム)をそのまま維持する必要がある。したがって、データベースの概念レベルおよび外部レベルのアーキテクチャ(英語版)は、変換時に維持する必要がある。また、アーキテクチャの内部レベルのいくつかの側面も維持されることが望まれる場合もある。複雑または大規模なデータベースの移行は、それ自体が複雑で費用のかかる(1度きりの)プロジェクトになる可能性があるので、移行を決定するときはその点を考慮する必要がある。これは、特定のDBMS間の移行を支援するツールが存在する可能性があるのにも関わらない。一般に、DBMSベンダーは、他の普及しているDBMSからデータベースをインポートするツールを提供している。
1990年代は、オブジェクト指向プログラミングの台頭とともに、さまざまなデータベース内のデータの扱い方で発展が見られた。プログラマーと設計者は、データベース内のデータをオブジェクトとして扱うようになった。つまり、ある個人のデータがデータベース内にある場合、その人の住所、電話番号、年齢などの特性は外来のデータではなく、その人に属するものと考えられるようになった。これにより、データ間の関係は、個々のフィールドではなく、オブジェクトとその属性に関連付けられる。プログラムされたオブジェクトとデータベースのテーブルとの間の変換の不都合は、「オブジェクト-リレーショナル・インピーダンスミスマッチ」という言葉で表わされる。オブジェクト・データベースやオブジェクト・リレーショナルデータベースは、この問題を解決するために、プログラマーが純粋なリレーショナルSQLの代わりに使用できるオブジェクト指向言語(SQLの拡張機能という場合もある)を提供しようとするものである。プログラミング側の立場では、オブジェクト・リレーショナル・マッピング(ORM)と呼ばれるライブラリで、同じ問題を解決しようとしている