データベース設計
データベース設計（データベースせっけい、英: database design）は、ソフトウェア開発工程においてデータベースの詳細なデータモデルを作る工程である。
データベース設計の成果物である物理スキーマは、論理設計上の決定と物理設計上の決定、および物理的な記憶装置に設定するパラメタ群を、すべて含む。
物理スキーマで記述される物理的な記憶装置に設定するパラメタ群については、なんらかのデータ定義言語 (DDL) を使って記述する際に必要なパラメタ群のみを、決定する。
DDLで記述された内容は、データベースを構築するために使うことができる。
十分に詳細に記述されたデータモデルは、おのおのの実体ごとに属性群を詳細に規定する。
データベース設計という用語には、あいまいさがある。
データベースシステム（データベースを使うコンピュータシステム）の全体の設計のうち、いくつかの異なる構成要素に対して、データベース設計という同じ用語が使われている。
正確には、データベース設計という用語は、データを永続化 (格納) するために使われる基本データ構造群の論理的な設計を意味すると、考えられている。
関係データベースを使う関係モデルにおいては、データベース設計は、基底関係（関係、表、テーブル）の集まりと導出関係 (ビュー）の集まりをいう。
オブジェクトデータベースを使うオブジェクト指向モデリングにおいては、データベース設計は、実体（エンティティ）の集まりと関連（リレーションシップ）の集まりは、オブジェクトのクラスの集まりと名前つきの関連の集まりに、直接に対応づけられる。
しかしながら、データベース設計という用語は、設計の工程の全体に対して適用されることもある。
その場合は、基本データ構造に加えて、データベース管理システム (DBMS) においてデータベースと相互作用するアプリケーションソフトウェア全体の一部分として使われる、ユーザインタフェースやデータ操作（データ問い合わせを含む）をも、データベース設計の対象に含まれる。
永続化するデータを決定する
多くの場合、データベース設計を行う人は、データベース設計に精通している。
いっぽうで、データベース設計者が、永続化（格納）の対象となる業務データ（例えば金融の情報や生物学の情報）の業務に精通していることは、あまりない。
こうした事情により、データベースに永続化するデータを決定する作業は、データベース設計に精通している人と、業務に精通しておりかつデータベース内にどのデータを永続化しなければならないかをわかっている人との、共同作業でなければならない。
この作業は、一般的には、ソフトウェア開発工程における要求分析の作業の一つと位置づけられる。
データベース設計者には、業務知識に精通している人々から必要な情報をくみとる能力が、必須である。
なぜなら、データベース設計で必要とされる業務知識には、データベースに対するシステム面での要求が明瞭に表現されていないことが、多いからである。
データベース設計者は、永続化しなければならないおのおのの業務データ要素を基盤として思考することに、慣れていないことが多い。
永続化するデータは、要求仕様で記述する。
論理設計
永続化の対象となるさまざまな情報を入力として従属関連の集まりが同定されると、データを論理的に構造化することができる。
データの論理的構造は、データベース管理システム (DBMS) によってサポートされる記憶域オブジェクトに対応づけることができる。
関係データベースを使う場合は、記憶域オブジェクトは基底関係（表、テーブル）である。
関係は、組 (タプル、行)と属性 (列、カラム) のなかにデータを格納する。
おのおのの関係 (表) は、論理的オブジェクトの、もしくは一つ以上の論理的オブジェクトと一つ以上の論理的オブジェクトをむすびつける関連の、実装を表現する。
論理的オブジェクトの間の関連は、子の論理的オブジェクトと親の論理的オブジェクトをむすびつける関連として格納される。
複雑な論理的関連は、それ自体が関係である。
複雑な論理的関連を表現する関係は、おそらく複数の親の論理的オブジェクトの関係群への参照をもつであろう。
オブジェクトデータベースを使う場合は、記憶域オブジェクトは、オブジェクト指向プログラミング言語で使われるオブジェクトに直接に対応づけられる。
オブジェクト指向プログラミング言語は、データを管理しまたデータにアクセスするアプリケーションソフトウェアを記述するために、使われる。
関連は、オブジェクトクラスの属性として定義されるか、もしくはオブジェクトクラスにおいて操作を行うメソッドとして定義される。