MySQL は、現在のプログラム開発で必ず使用されます。MySQL は、スウェーデンの MySQL AB 社というオープンソースの小規模リレーショナル データベース管理システムです。現在、MySQL はインターネット上の中小規模の Web サイトで広く使用されています。 MySQL は、サイズが小さく、速度が速く、総所有コストが低く、特にオープンソースの特性により、Web サイトの総所有コストを削減するために、多くの中小規模の Web サイトが Web サイト データベースとして MySQL を選択しています。この記事では、データベース設計の一般的な手順と例について説明します。
1. データベース設計の一般的なプロセス
1. 概要
コース設計トピックの選択、プロジェクトの背景、コース設計レポートを作成する目的、コース設計レポートの構成など。
2. コース設計タスクの要件分析
2.1 設計タスク
2.2 要件を説明するための仕様書
3. 概念構造設計
3.1 概念構造設計ツール (E-R モデル)
3.2XXXサブシステム(部分)
3.2.1 サブシステムの説明
3.2.2 点 E-R 図
3.2.3 説明
3.3YYY サブシステム
3.3.1 サブシステムの説明
3.3.2 点 E-R 図
3.3.3説明
……
3. スキーマ
4.2 ビューの設計
4.3 最適化
5. データベースの物理設計と実装
5.1 データベースアプリケーションのハードウェアおよびソフトウェア環境の概要
5.2 物理構造の設計
5.3 索引設計
5.4 データベースの確立
5.5 データベースのテストデータのロード
6. データ操作の要件と実装
6.1 データのクエリ操作
6.2 データの更新操作
6.3 データのメンテナンス操作
6.4 その他
7.データベースアプリケーションシステム
8. 設計体験
9. 参考文献
2. 例: 学生コース選択管理システム
大学の教育管理システムにおいて、学生コース選択管理は非常に重要な機能モジュールです。
要件分析:
システムは、学校の教師情報、学生情報、専門情報、学校が提供するすべてのコースに関する情報、学生の選択コースに関する情報などを管理できる必要があります。履修選択システムは主に、システム管理者、教務担当教員、学生の 3 種類の利用者の要件を満たします。それぞれが持つ操作権限や操作内容が異なります。具体的な需要分析は次のとおりです:
システム管理者
は生徒の基本的な個人情報を管理し、生徒の個人情報を追加、削除、変更します。
生徒情報には...
教師の基本的な個人情報を保持し、教師の個人情報の追加、削除、変更を実現します。
講師情報には...
コースの基本的な個人情報を保持し、コースの個人情報を追加、削除、変更します。
コース情報には...
学生ユーザー
個人情報のクエリと変更が含まれます。
コース選択操作を実行します
学生は、選択したコースの情報と、以前に選択したコースの実績情報を参照できます。
教師ユーザー
個人情報の照会と変更
コース終了後、結果を登録
教師は自分の指導スケジュールを確認できます。
データベースの概念構造設計:
概念構造設計の一般的なツールは ER 図です。次の手順で完了します。
データの抽象化 (エンティティの抽象化)。各エンティティの属性図を描きます。
ER図を設計します。エンティティとその接続を見つけて、ER 図を描画します。
個別の ER 図を結合して、予備的な ER 図を生成します。
グローバルER図。各エンティティの属性を予備的な ER 図に追加して、ローカルの競合 (属性の競合、名前の競合、構造の競合など) の可能性を排除し、グローバル ER 図を形成します。
データベースの論理構造設計:
まず、概念モデル ER 図のエンティティと関係をデータ モデルに変換し、RDBMS でリレーショナル スキーマに変換し、リレーショナル スキーマの属性と主キーを決定します。 。
ER グラフをリレーショナル データ モデルに変換するための基本的なルールは次のとおりです:
エンティティはリレーショナル スキーマに変換され、エンティティの属性は関係の属性になり、エンティティのキーは関係のキーになります。関係。
エンティティ間のリレーションシップが 1:1 の場合、リレーションシップは別のリレーションシップ スキーマのキーとリレーションシップのプロパティを、対応するリレーションシップ スキーマのいずれか 1 つに追加する必要はありません。 2つの実体。
エンティティ間の関係が 1:n の場合、関係は個別に関係スキーマに変換されません。1 側のエンティティに対応する関係スキーマのキー属性と連絡先属性を、側エンティティに対応する関係スキーマに追加する必要があります。 n 側エンティティ。
エンティティ間のリレーションシップが m:n の場合、リレーションシップもリレーションシップ モードに変換され、その属性は両端のエンティティ タイプのコードにリレーションシップの属性を加えたものとなり、リレーションシップのキーはその組み合わせとなります。両端の実体コードの。
2 番目に、同じ主キーを持つ関係パターンの必要なマージを実行します。
関係の最適化
正規化理論に基づいて、リレーショナル データ モデルが最適化されます。第 3 正規形に正規化されています。
データベースの物理設計と実装:
主に次の作業が含まれます:
データベースの作成
基本テーブルの作成、制約の設定、および基本テーブルの管理。
インデックスを作成および管理します。 (DBMS は主キーのインデックスを自動的に作成します。クエリ効率を向上させるためにインデックスを作成します。)
ビューを作成および管理します。
データベースにデータを入力します。
SQL ステートメントを使用して、クエリ、変更、削除、その他のデータ操作を行います。 (最初にデータベースの操作方法を考えて、後で実装することもできます)
ストアド プロシージャ、トリガーなどを作成し、デバッグに合格します。 (例: 特定の学籍番号の学生が学生テーブルから削除されたときに、コース選択テーブルのコース選択レコードを自動的に削除するトリガーを作成します)
データベースの運用保守:
主に以下の内容が含まれます
データベースのバックアップとリカバリ
データベースのセキュリティと整合性の管理
データベースのパフォーマンスの監視、分析、改善
以下のステートメントを通じてデータベースにアクセスし、データを操作します。
学生テーブルの性別と年齢フィールドに制約を追加します。
属性列「登録時刻」を追加します。
「プロフェッショナル」データタイプを変更します。
コース名には一意の値が必要であるという制約を追加します。
コース選択表の「学籍番号」と「コース番号」の列にインデックスを作成します。
コース選択表の「ジョブ番号」と「コース番号」にインデックスを作成します。
学生コース選択システムに4つの学科があると仮定し、各学科の教務担当者が学科の学生情報を閲覧しやすくするために、各学科が学生ビューを作成します。
学生のコース選択を反映するビューを作成します。
学生は、学生番号または名前でコース選択情報を確認できます。
学生は学籍番号または名前から基本情報を確認できます。
特定の教師が指導した特定のコースの成績証明書をリストし、昇順または降順で表示します。
特定の教師が教えたすべてのコース情報をリストします。
学生が受け取った信用情報を照会します。
特定のコースの教師の平均スコア、最高スコア、最低スコアに関する統計。
新しいコースを追加します。
特定のコースのクレジットを変更します。
削除トリガーを作成する 学生テーブル内の特定の「学生番号」を持つ学生が削除されると、コース選択テーブル内の学生のコース選択レコードが自動的に削除されます。つまり、その学生に対して削除トリガーが作成されます。テーブルのカスケード削除と学生テーブルを実現します。
削除トリガーを作成します。コーススケジュール内の特定の「コース番号」を持つコースが削除されると、コース選択リスト内のそのコースのすべてのレコードが自動的に削除されます。学生テーブルとコース選択テーブルのカスケード削除を実現するためのコーススケジュール。
コース選択テーブルにレコードを挿入するときに、学生テーブルに学生番号を持つ学生がいるかどうか、コーステーブルにコース番号を持つコースがあるかどうかをクエリします。両方の場合は挿入できますが、そうでない場合は挿入が拒否されます。
「学生コース選択システム」データベースをローカルディスクのEドライブ直下のBACKUPDBフォルダにバックアップします。
sp_addumpdevice 'disk','学生コース選択システム_bak','E:BACKUPDB 学生コース選択システム_bak'
BACKUP DATABASE 学生コース選択システム TO DISK='学生コース選択システム_bak'
図書貸出管理システム
要件分析:
システムは次の機能を実装する必要があります: 図書館員は、新しい本の追加、書籍情報の変更、書籍の貸出登録の処理、返却の登録、期限切れの書籍の処理、紛失した書籍の処理、および読者の貸出証明書情報の保守を含む書籍情報を保守できます。等。読者は本の貸し出し、本の返却、本の情報の確認、本の情報の貸し出しなどができます。具体的な要件は次のとおりです:
書籍情報管理: 各書籍情報の入力、書籍情報の保守など。
読者情報管理: 読者情報を維持し、実際のニーズに応じて読者を変更、更新、削除します。
貸出管理: 書籍の貸出、返却、期限切れの書籍の返却などが含まれます。
図書貸出管理システムには大きく分けて2種類のユーザーがいます。
管理者: 書籍の種類を含む基本的な書籍データを維持し、書籍情報を更新し、読者の書籍の貸し出しと返却を処理します。
読者ユーザー: 書籍情報を確認したり、書籍を借りることができます。
意味: 図書館の本の状況と管理規定。それぞれの種類の本にはさまざまな本があり、同じ本を複数回借りることができ、各読者は複数の本を借りることができます。貸出期間は1冊あたり1ヶ月です。
データベースの概念構造設計:
3 つのステップで完了: 1) エンティティを抽象化する 2) 抽象化して現実と接続する) エンティティの属性とキーを決定する
書籍の種類 (書籍分類番号、書籍分類を含む)名前、説明情報。
書籍:書籍番号、書籍タイトル、著者、出版社、価格。
ID番号、名前、性別、所属、クラス、IDのステータス(有効・無効を含む)、連絡先情報などを含む読者。
読者と本の関係はm:n、本の種類と本の関係は1:nで、読者と本の種類の間にはつながりがありません。
データベース論理構造設計:
E-R図をリレーショナルモデルに変換します。
リレーショナル モデルを最適化する
第 3 正規形に正規化する
データベースの物理設計と実装:
主に次の作業が含まれます:
データベースを作成する
基本的なテーブルを作成し、制約を設定し、基本的なテーブルを管理します。
インデックスを作成および管理します。 (DBMS は主キーのインデックスを自動的に作成します。クエリ効率を向上させるためにインデックスを作成します。)
ビューを作成および管理します。
データベースにデータを入力します。
SQL ステートメントを使用して、クエリ、変更、削除、その他のデータ操作を行います。 (最初にデータベースの操作方法を考えて、後で実装することもできます)
ストアド プロシージャ、トリガーなどを作成し、デバッグに渡します。
データベース内のデータを操作する
管理者の分類管理を容易にするために、複数の書籍タイプのビューを作成する必要があります。
読者貸出状況表を作成します。
借用テーブルに文書番号と借用日を組み合わせたサブインデックスを作成します。
書籍テーブルに書籍分類番号、書籍タイトル、出版社フィールドのインデックスを作成します。
借用テーブルに挿入された「文書番号」がリーダーテーブルに存在することを確認するために、借用テーブルの挿入トリガーを作成します。存在しない場合、借用情報レコードは借用テーブルに挿入されません。
借用テーブルに更新トリガーを作成し、借用テーブルの「借用日」列を監視して、手動で変更できないようにします。
リーダーテーブルと借用テーブルのカスケード削除を実現するために、リーダーテーブルに削除トリガーを作成します。
スポーツゲーム管理システム
要件分析: スポーツゲームを管理するためにコンピューターを導入すると、アスリートはスポーツ競技管理システムで自分の競技イベントと競技結果を確認し、各競技の結果と進捗状況を記録できます。システムによる競技イベントのパフォーマンス統計などスポーツ大会管理システムは、選手や競技種目、各種競技の参加データを保存します。
スポーツ大会管理システムの主な管理対象には、代表チーム、選手、競技種目などが含まれます。
この制度では、代表チームには複数の選手が所属し、選手は1つの代表チームにのみ所属することができ、また、1つの競技イベントには複数の選手が参加することができます。 ; 各競技種目終了後、結果に応じて上位から順位が付けられ、例えば1位、2位、3位の選手にそれぞれのポイントが与えられます。他の順位の選手のポイントはそれぞれ3点、2点、1点となり、0点の場合は代表チーム全員のポイントを合算し、各代表チームの合計ポイントを求めます。上位から下位まで、各代表チームの順位を取得します。
このスポーツ大会管理システムは、システム要件を簡素化するため、陸上競技の運営のみを考慮し、代表チームと競技種目の関係のみを考慮し、審判の得点、競技時間、場所の配置は考慮していません。 、など。
データベース概念構造設計:
代表チーム:代表選手、チーム名、チームリーダー、合計得点、合計ランキング
選手:選手番号、氏名、性別、年齢
競技項目:プロジェクト番号、プロジェクトカテゴリー、プロジェクト名前、グレード単位の
データベースの論理構造の設計:
4 つのテーブル、
結果、ポイント、ランキングを含むコンテストの詳細
上記はデータベース設計の一般的な手順と例であり、誰もがすでに大まかなアイデアを持っていると思います。データベースを設計する方法を理解しました。
関連チュートリアル:
データベースを最適化する方法データベースを復元する、復元中のデータベースプロンプトを処理する方法データベースに関する共同クエリの例以上がデータベース設計の一般的な手順と例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。