序文
こんにちは、Tiangang gg です。今日は、理論的な知識だけでなく、実際に実装できるデータベース設計である「図書貸出システムのデータベース設計」を行います。このデータベースの設計は長い時間をかけて洗練されたものであり、何千ものコレクションを持ついくつかの記事 (記事の最後に参照リンクがあります) を参照したため、非常に長く、詳細で、充実しています。デザイン祭り!さらに、大学生からの提案も求めました.コース設計に関する関連情報を提供してくれた皿を洗うことができるCVエンジニアに感謝し、この記事のために多くの建設的な提案も提供してくれました.提案や意見があれば, メッセージやプライベートメッセージを残してください. 私の計画は引き続き更新されます. 目的は、高品質の製品を作成し、お互いから学び、一緒に成長することだけです! このデータベース設計を通じて、誰もが実際の戦闘で設計スキルを学ぶことができます! もちろん、これは単なる小さなシステムであり、反映できない多くの設計スキルがあります. 合理的な設計は非常に重要であり、より大きなビジネス シナリオをサポートできます. 設計するシナリオやシステムが増える必要がある場合は、私にデザインを依頼してください、私は満足するために最善を尽くします!
データベース設計の基本ステップ
標準的な設計方法に従って、データベースおよびアプリケーション システム開発の全プロセスを考慮して、データベース設計は次の 6 つの段階に分けられます。
- 要件分析: データ、機能、パフォーマンス要件など、ユーザーのニーズを分析します
- 概念構造設計:主に設計に ER モデルを使用し、ER 図の作成を含む
- 論理構造設計:ER図を表に変換することでERモデルからリレーショナルモデルへの変換を実現
- 物理構造の設計: 主に、設計されたデータベースに適したストレージ構造とアクセス パスを選択します。
- データベースの実装: プログラミング、テスト、試運転を含む
- データベースの運用と保守: 運用中に常に調整と変更が行われます。
この記事のディレクトリ
1. 背景とニーズの分析
説明: データ、機能、パフォーマンス要件など、ユーザーのニーズを分析します。
1.1 背景
図書館は、情報資源の交換の場として、多数の図書や利用者の貸出資料を保有し、大量のデータ情報の管理も行っているため、図書管理の電子情報化を実現することで、煩雑な作業モードを簡素化し、効率的に利用することができます。本を借りるプロセスの多くの問題を解決し、図書館員や借り手に大きな利便性をもたらします。
図書貸出システムは、図書館の図書貸出業務に合わせて設計されており、その機能は主にデータ保守と基本機能の2つのモジュールに分かれています。データ保守モジュールには、図書データ保守と借用者データ保守が含まれ、基本機能モジュールには、図書および借用者情報の閲覧、図書の貸出、図書の返却、クエリ、および統計が含まれます。
1.2 情報ニーズ
図書貸出システムは、主に 、 、 の 2 つの ID を対象としています管理员
。学生
学生:借りたい図書はネットで検索でき、図書の基本情報が確認できることは最低条件です。より良い借り入れ体験のために、借りた回数、コメントの数、特定のコメント、および本の借り出し状況を表示できます。貸出回数やコメントを確認して、本への関心を高めます チェックした本の貸出状況がアイドル状態の場合は、オンラインで直接借りることができます すでに借りている場合は、コレクション機能を提供して、将来を容易にすることができます電子情報化の利点である本について何か言いたいことがある場合は、コメントを開始することもできます。
管理者:主な責任は、書籍を維持し、学生を管理することです。より良い運営のために、ニュースの発表や新しい本の推薦などを行います.より標準的な運営のために、学生の貸出と貸出の承認、学生の図書の貸出の承認、学生の貸出図書の承認と登録が必要です.生徒の返却図書、コメントのレビュー、承認など
1.3 機能要件
管理者
-
ライブラリ管理
必要な機能でもある記帳や修正の機能も含めて。
本に含まれるフィールド:本番号、本のタイトル、本の種類、著者、本の紹介、本の表紙、出版社、出版時期
- 新刊レコメンド:本をレコメンドする機能があり、管理者の操作後、学生が閲覧できるレコメンドエリアにレコメンドされた本が表示されます。
- 貸出承認: 学生が開始した貸出申請は、管理者によって承認される必要があり、承認が渡された後にのみ書籍をオフラインで受け取ることができます。管理者は、承認と却下の2つの機能項目を含め、図書と学生の状況に応じて承認できます.却下は却下理由を記入する必要があります
- 書籍のレビュー管理: 学生が書籍の詳細で書籍にコメントして採点した後、それは直接表示されず、承認と削除を含め、管理者によって承認された後にのみ公開されます。
- 返却の確認: 生徒が本を返却すると、管理者は返却を確認する機能操作を実行します。
-
学生管理
- 学生による図書館カードの申請は、管理者の承認が必要であり、承認後に学生は図書を借りることができます。管理者は学生の状況に応じて承認を行います。2 つの機能アイテムの合格と拒否
- 学生の貸出資格を凍結または復元すると、管理者は、規則に従わない学生を凍結する権限が大きくなります。学生が凍結されると、管理者が書籍を復元するまで、図書を借りることができなくなります。
-
告知管理
この機能は主に、冬休みが近づいている、図書館の休館日が近づいている、図書を借りてください、休暇中の補足知識などのお知らせなど、いくつかのお知らせ情報を入力するためのものです。
ニュース速報を追加、変更、および削除する機能を含みます。
お知らせには次のフィールドが含まれます: title、content、release time
学生
-
学生登録
学生は、登録時にユーザー名とパスワードを入力する必要があります。
ログイン後、図書カードを申請するには、学生番号、学生名、学生のニックネーム、学生の所属(○○大学○○学科○○クラスなど)、学生証の写真を入力する必要があります。
-
表紙
管理人が発行するお知らせや新刊のおすすめを閲覧できます。
-
借りたい
図書館カードの申請が承認されると、借りたい入口が表示されます。
-
本を探す
図書の種類で絞り込み、貸出数と発行時期で並べ替え
-
借りる
図書の貸出状況がアイドル状態のときのみ、クリックして借りることができます。ローンを提出した後、承認のために管理者に送信されます。個人借入レコードの承認結果を照会できます: 合格または拒否。
-
収集
興味のある本がある場合は、クリックしてブックマークするか、ブックマークをキャンセルできます。私のコレクションで見ることができます。
-
コメント
この本について何か言いたいことがあれば、クリックしてコメントと採点を行うと、承認のために管理者に送信されます. 承認後、コメントは本の下に公開されます.
-
-
パーソナルセンター
- 個人情報の表示
- 私の借り物
- 私のコレクション
- パスワード変更、シークレットパスワード
1.4 データフロー図
追加予定
2. 構造概念設計
説明: 主にシステム エンティティを抽象化し、設計に ER モデルを使用します。
1. 抽象システムエンティティ
学生-「申請-」図書館カードは、[学生]と[図書館カード]の2つの実体を得ることができ、[申請]はつながりです。
学生-「借りる-」本、[本]エンティティを取得でき、[借りる]が接続です。
学生 - 「コレクション -」 書籍は、[コレクション] が接続であると結論付けることができます。
学生 - 「コメント -」 図書では、[コメント] がリンクであると結論付けることができます。
管理者 - 「リリース」 - アナウンス、[管理者] と [アナウンス] の 2 つのエンティティを取得でき、[リリース] は接続です。
Admin-「Management-」書籍、[management] がリンクであると結論付けることができます。
関連する 5 つのエンティティは次のとおりです。
-
- 。 学生
-
- . 図書カード
-
- . 本
-
- . 管理者
-
- 。 知らせ
5 つのエンティティ間のリンクは次のとおりです。
- 1 人の学生は 1 枚の図書館カードしか持つことができず
申请
、1 つの図書館カードは 1 人の学生にしか所属できないため、1 対 1 の連絡先です。 - 1 人の生徒は N 冊の本を所有でき
借阅
、1 冊の本も N 人の生徒が借りることができるため、生徒と本は多対多の借用関係にあります。 - 1 人の生徒は N 冊の本を所有でき
收藏
、1 冊の本も N 人の生徒が収集できるため、生徒と本は多対多の収集関係にあります。 - 1 人の生徒が N 冊の本を所有でき
评论
、1 冊の本に N 人の生徒がコメントすることもできるため、生徒と本は多対多のレビュー関係にあります。 - 1 人の管理者は N 個のアナウンスを作成できます
发布
が、1 つのアナウンスは 1 人の管理者のみが発行できるため、1 対多の関係です。 - 1 人の管理者は N 冊の本を持つことができ
管理
、1 冊の本は 1 人の管理者しか管理できないため、1 対多の関係です。
2.部分ER図
ER 図: エンティティ関係、エンティティ関係図。
通常、次の 4 つの部分があります。
長方形のフレーム: エンティティを表し、フレーム内にエンティティ名を入力します。
楕円ボックス: 属性を示し、ボックスに属性名を入力します。
ひし形のボックス: 連絡先を示し、ボックスに連絡先の名前を書き留めます。
接続: エンティティと属性の間、エンティティと接続の間、接続と属性の間、
そして、エンティティ間の接続のタイプをマークします (1 対 1 接続の場合、2 つのエンティティの接続方向に 1 を書き込みます。1 対多接続の場合、一方の側に 1 を書き込み、多側に n を書き込みます)。 ; 多対多の関係の場合、2 つのエンティティの接続方向に m と n を記述する必要があります。)
2.1 学生 ER ダイアグラム
これはエンティティです。
必要に応じて、学生の基本情報には、学生番号、学生の名前、学生のニックネーム、学生の所属(○○大学の○○学部の○○クラスなど)、学生証の写真が含まれます。
要件が凍結状態であるため、プロパティを追加します。
- 凍結:学生の貸出状況が凍結されているかどうか
2.2 図書館カードのER図
これはエンティティです。
2.3 本の ER ダイアグラム
これはエンティティです。
必要に応じて、書籍の基本情報には、書籍番号、書籍名、書籍タイプ、著者、書籍紹介、書籍の表紙、出版社、発行時期が含まれます。
派生する追加の属性が 2 つあります。
- 新しい本のおすすめですか: これは、管理者が維持できる新しい本のおすすめの識別子です。
- 書籍のステータス: 保留中または貸出中
2.4 管理者 ER ダイアグラム
これはエンティティです。
2.5 アナウンスER図
これはエンティティです。
必要に応じて、お知らせの基本情報には次のものが含まれます:タイトル、コンテンツ、リリース時間
削除される可能性があるため、次の 2 つの追加プロパティが派生します。
- 削除済み: これは、管理者によって削除されたお知らせの ID です。
- 削除時刻: 管理者がお知らせを削除した時刻です
2.6 ER図の申請
これはリンクです、【学生】と【図書カード】の間に【申し込み】のリンクがあります。
【申请
】は【管理者】の承認が必要なため、以下の属性が含まれます。
2.7 ER図の借用
これはリンクです。[学生] と [本] の間に [借りる] のリンクがあります。
[ 借阅
] は [管理者] によって承認されて返却される必要があるため、次の属性が含まれます。
2.8 ER図へのコメント
これはリンクです。[生徒] と [書籍] の間に [コメント] のリンクがあります。
【评论
】は【管理者】の承認が必要なため、以下の属性が含まれます。
2.9 ER図の保存
これはつながりで、[生徒]と[本]の間には[コレクション]のつながりがあります。
[ 收藏
] は [管理者] の承認を必要とせず、[キャンセル] できるため、次の属性が含まれます。
速報リリースも帳簿管理も記録管理を必要としないため、関連するプロパティはありません。
3. グローバル ER ダイアグラム
私は属性を省略しました, 色付きのエンティティと接続は、それ自体で属性を補完する必要があります. 上記の部分的なER図によると, 怠惰にならないでください, 実際にそれを描くと、より多くの洞察が得られるかもしれません.
3. 論理構造設計
説明: ER 図をリレーショナル モデルに変換します。
3.1 変換規則
エンティティ タイプは、1 対 1、1 対多、および多対多の関係を持つリレーショナル モデルに変換されます。さまざまな接続と関係のモデルも異なります。
-
1 対 1: 1 対 1 の 2 つのエンティティを 2 つの関係パターンに変換するか、1 つの関係パターンに組み合わせることができます。また、それらの間の接続を 1 つの関係パターンに変換するか、実在物。
-
一対多: 各エンティティは依然としてリレーショナル パターンに変換され、それらの間の接続はリレーショナル パターンに個別に変換できます。または、関係を多数 (N) の対応するエンティティに記録できます。
-
多対多: 各エンティティは引き続きリレーショナル パターンに変換され、エンティティ間の接続はリレーショナル パターンに変換する必要があります。
3.2 関係スキーマ
3.2.1 変換規則による分析
-
学生-「申込書-」図書カード
- 【
学生
】エンティティはリレーショナル スキーマに変換できます。 - 【
申请
】レコードを保存する必要があるため、リレーショナル モデルに変換することもできます并增加【学生编号】属性
。 - [学生] と [図書館カード] には 1 対 1 の関係があります。これは、要件で [図書館カード] が他に使用されていないためです。そのため、[図書館カード] を [学生] 関係モデルにマージし、 と呼びます
【是否申请通过】属性
。もちろん、今後新たなニーズがあれば、【図書館カード】関係モデルを追加するのに遅すぎることはありません。
- 【
-
学生の「借りる」図書
- 【
图书
】エンティティはリレーショナル スキーマに変換できます。 - 【
借阅
】レコードを保存する必要があるため、リレーショナル モデルに変換できます并增加【学生编号】、【图书编号】属性
。 - [借りている本] のクエリ属性として [本] は非常に一般的なため、 [
图书
] entity增加【借阅次数】属性
.
- 【
-
学生の「コレクション」図書
- 【
收藏
】レコードを保存する必要があるため、リレーショナル モデルに変換できます并增加【学生编号】、【图书编号】属性
。
- 【
-
学生の「講評」図書
- 【
评论
】レコードを保存する必要があるため、リレーショナル モデルに変換できます并增加【学生编号】、【图书编号】属性
。 - [コメント数] は [書籍] の非常に一般的なクエリ属性であるため、[
图书
] エンティティ增加【评论数】属性
.
- 【
-
管理人-「リリース-」のお知らせ
- [
管理员
] と [公告
] の 2 つのエンティティは、1 対多の関係であるため 2 つの関係モデルに変換でき、[お知らせ] は多数の関係者であるため、含まれます【管理员编号】属性保存到【公告】
。 - 【リリース】記録保持不要なので変換不要。
注意:
管理者も学生もユーザーに属しているため、管理者と学生を [用户
] に抽象化し、管理者には属性がないため、 [ユーザー]、[学生] のロールとしてのみ機能します增加【用户编号】属性
。
- [
-
Admin-「管理-」本
- 【管理】記録保存不要なので変換不要。
3.2.2 実際の変換結果
上記のルールと分析によると、次の8 つの関係モデルが得られます (赤文字の属性がメイン コードです)。
- ユーザー テーブル:
用户编号
、ユーザー名、パスワード、役割 (0-学生 1-管理者) - 学生表:
学生编号
、利用者番号、学生名、学生ニックネーム、学生所属、学生証の写真、申請可否(0-不合格1-合格)、凍結可否(0-正常1-凍結) - 貸出カード申込記録票:
申请编号
学生番号、申込時刻、管理者操作時刻、申込状況(0-審査待ち、1-合格、2-不採用)、不採用理由、管理者番号 - 書籍テーブル:
图书编号
、書籍名、書籍の種類、著者、書籍の紹介、書籍の表紙、出版社、発行時期、書籍の状態 (0-アイドル 1-借りている)、新しい書籍の推奨かどうか (0-いいえ 1-はい)、拝借回数、コメント数 - 図書貸出記録表:
借阅记录编号
学生番号、図書番号、貸出時間、貸出状況(0-保留中 1-可 2-却下済み 3-返却済み)、却下理由、審査時間、返却時間、管理者番号 - 図書回収表:
收藏编号
、学籍番号、図書番号、回収時間、取消の有無、取消時間 - 書評表:
评论编号
、受講者番号、図書番号、評点(1、2、3、4、5)、評論内容、評論時間、評論状況(0-評論対象、1-合格、2-不採択)、管理者番号 - お知らせ表:
公告编号
タイトル、内容、公開時期、削除の有無、削除時期、管理者番号
8 つのテーブル間の関係は、次のように分析されます。
- 学生とユーザー
1 人の生徒は 1 人のユーザーなので、生徒とユーザーの間には1 対 1 (1 : 1) の関係があります。
- 【学生・管理者】と【図書館カード申込書】
図書館カードは、1 人の学生が N 回の申請を行うことができ(再申請に失敗する場合があります)、図書館カードの 1 つの申請は 1 人の学生のみが開始できるため、1 対多の関係があります。学生と図書館カード申込記録(1:n)の関係。
1人の管理者は、N個の借入カード申請に対して承認を申請でき、1つの借入カード申請は1人の管理者のみが承認できるため、管理者と借入カード申請レコードの間には1対多(1:n)の関係があります。
- 【学生・管理者】と【図書貸出記録】
1 人の学生は N 回の借用を開始でき、1 つの借用は 1 人の学生のみが開始できるため、学生と書籍の借用レコードの間には1 対多(1:n) の関係があります。
1 人の管理者は N 回の借用を承認できますが、1 つの借用は 1 人の管理者のみが承認できるため、管理者と図書の借用レコードの間には1 対多(1:n) の関係があります。
1冊の本はN回借りることができ、1回の借り入れは1冊の本しかできないため、本と本の借り入れ記録は1対多(1:n)の関係になります。
注: 一度に N 本を借りることができる場合、図書と図書の借用記録の間には多対多(m : n) の関係があります。
- 【学生・管理者】と【書評】
1 人の学生は N 個のコメントを開始でき、1 つのコメントは 1 人の学生のみが開始できるため、学生とコメントの間には1 対多(1: n) の関係があります。
1 人の管理者は N 個のコメントを承認でき、1 つのコメントは 1 人の管理者のみが承認できるため、管理者とコメントの間には1 対多(1:n) の関係があります。
1 つの本には N 個のコメントを付けることができ、1 つのコメントは 1 つの本にしか付けられないため、本とコメントの間には1 対多(1: n) の関係があります。
- 学生と蔵書
1 人の学生は N 本の本を収集でき、1 つのコレクションは 1 人の学生にのみ属することができるため、学生とコレクションの間には1 対多(1 : n) の関係があります。
1 冊の本は異なる生徒によって N 回収集される可能性があり、1 冊のコレクションは 1 冊の本に対してのみ収集できるため、書籍と書籍コレクションの間には1 対多(1 : n) の関係があります。
- 管理者とお知らせ
1 人の管理者は N 個のお知らせを公開でき、1 つのお知らせは 1 人の管理者のみが発行できるため、管理者とお知らせの間には1 対多(1:n) の関係があります。
3.3 テーブル構造
- ユーザーテーブル:
- 生徒用テーブル:
- ブックテーブル:
- 発表フォーム:
- 借り手カード申請記録用紙:
- 図書貸出記録用紙:
- 書評フォーム:
- 図書コレクション表:
4. 物理構造の設計と実装
MySQL データベース、InnoDB ストレージ エンジンを使用します。
4.1 データベースを作成する
指定された文字セットを次のように表示します: utf8mb4、絵文字をサポートします。
数据库命名规则
: 小文字とアンダースコアのみを含み、小文字で始まる
CREATE DATABASE `db_book` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
4.2 データテーブルの作成
指定された文字セットを次のように表示します: utf8mb4、絵文字をサポートします。
表和字段命名规则
:(「アリババハンドブック-台山編」参照)
-
小文字とアンダースコアのみを含み、小文字で始まる
-
サブデータベースのサブテーブルを必要としないシナリオでは、主キーは id という名前で、自動インクリメント AUTO_INCREMENT です。
-
非負のフィールドは符号なしである必要があります
-
テーブル名は複数名詞を使用しない
-
テーブルには、id、gmt_create、gmt_modified の 3 つのフィールドが必要です。gmt_create の作成時間、gmt_modified の更新時間、どちらの型も datetime 型で、前者は現在形での能動的な作成を意味し、後者の過去分詞は受動的な更新を意味します
-
decimal 型は decimal で、float と double は禁止されています
-
予約語を無効にします。MySQL 公式の予約語を参照してください。
-
外部キーの使用を禁止する
-
ストアド プロシージャの使用を禁止する
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户编号',
`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
`password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
`role` tinyint(1) UNSIGNED NOT NULL COMMENT '角色(0-学生 1-管理员)',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生编号',
`user_id` int(11) UNSIGNED NOT NULL COMMENT '用户编号',
`student_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学生编号',
`student_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学生姓名',
`nick_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学生昵称',
`department` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学生所属(例如XX学院XX系XX班)',
`id_card_image` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '学生证照片',
`is_approved` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否申请通过(0-未通过 1-通过)',
`is_frozen` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否冻结(0-正常 1-冻结)',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- 剩余6张表的完整代码订阅专栏后,请私信我或添加文章底部微信领取
SET FOREIGN_KEY_CHECKS = 1;
4.3 データの初期化
管理者アカウントのユーザーを初期化して追加するだけです。
INSERT INTO `user` VALUES (1,'admin','2469c47aa7b758eefff3d75939b20c7b',1,NOW(),NOW());
5. 具体的な事業分析
5.1 図書の入力
四大名作入り
INSERT INTO `book` VALUES (1, 'ts_00001', '西游记', 1, '吴承恩', '《西游记》主要描写了孙悟空、猪八戒、沙僧三人保护唐僧西行取经,唐僧从投胎到取经归来共遇到八十一难,一路降妖伏魔,化险为夷,最后到达西天、取得真经的故事。','xxx出版社','1990-10-10', '', 0, 0, 0, 1, 1, NULL, '2023-04-07 00:00:10', '2023-04-07 00:00:10');
INSERT INTO `book` VALUES (2, 'ts_00002', '三国演义', 1, '罗贯中', '《三国演义》可大致分为黄巾起义、董卓之乱、群雄逐鹿、三国鼎立、三国归晋五大部分,描写了从东汉末年到西晋初年之间近百年的历史风云,以描写战争为主,诉说了东汉末年的群雄割据混战和魏、蜀、吴三国之间的政治和军事斗争,最终司马炎一统三国,建立晋朝的故事。','xxx出版社','1993-10-10', '', 0, 0, 0, 1, 1, NULL, '2023-04-07 00:00:10', '2023-04-07 00:00:10');
INSERT INTO `book` VALUES (3, 'ts_00003', '水浒传', 1, '施耐庵', '《水浒传》是第一部描写农民起义的小说,全书围绕“官逼民反”这一线索展开情节,表现了一群不堪暴政欺压的“好汉”揭杆而起,聚义水泊梁山,直至接受招安致使起义失败的全过程。','xxx出版社','1995-10-10', '', 0, 0, 0, 1, 1, NULL, '2023-04-07 00:00:10', '2023-04-07 00:00:10');
INSERT INTO `book` VALUES (4, 'ts_00004', '红楼梦', 1, '曹雪芹', '《红楼梦》是以贾、史、王、薛四大家族的兴衰为背景,以富贵公子贾宝玉为视角,以贾宝玉与林黛玉、薛宝钗的爱情婚姻悲剧为主线,描绘了一些闺阁佳人的人生百态,展现了真正的人性美和悲剧美,是一部从各个角度展现女性美以及中国古代社会百态的史诗性著作。','xxx出版社','1992-10-10', '', 0, 0, 0, 1, 1, NULL, '2023-04-07 00:00:10', '2023-04-07 00:00:10');
5.2 学生登録+図書館利用カードの申請
5.2.1 登録
INSERT INTO `user` VALUES(2,'[email protected]', '2469c47aa7b758eefff3d75939b20c7b',0,NOW(),NOW());
5.2.2 学生情報の入力と図書カードの申請
-- 填写学生信息
INSERT INTO `student` VALUES (1, 2, 's_00001', '张三', 'better man', 'XX学院XX系XX班', '', 0, 0, '2023-04-08 00:00:00', '2023-04-08 00:00:00');
-- student_id=1的学生,申请借阅证
INSERT INTO `qualification`(`id`, `student_id`, `status`, `verify_time`, `verify_user_id`, `reject_reason`, `gmt_create`, `gmt_modified`) VALUES (1, 1, 0, NULL, NULL, '', '2023-04-08 00:00:00', '2023-04-08 00:00:00');
5.3 管理者が図書館カードを承認する
-- verify_user_id=1的管理员,审批通过 申请借阅证记录id=1的申请,status=1审批通过
update qualification set `status` = 1,
verify_time ='2023-04-08 00:10:00',
verify_user_id = 1,
gmt_modified = '2023-04-08 00:10:00'
where id = 1;
-- 让id=1学生,拥有借阅资格,is_approved = 1为有借阅资格
update student set is_approved = 1,
gmt_modified = '2023-04-08 00:10:00'
where id = 1;
5.4 書籍の検索
例:本の種類とタイトルで検索
表示フィールドは次のとおりです:書籍名、書籍の表紙、借用数、およびコメント数
借用数に応じて逆順で、ページネーションはアイテム0から始まり、10アイテムかかります
select id, book_name, cover_image, borrow_count, comment_count from book
where book_type = 1 and book_name LIKE '红%'
order by borrow_count desc
limit 0,10
掲載時期の正順に従い、20記事目から改ページ、10記事分
select id, book_name, cover_image, borrow_count, comment_count from book
where book_type = 1 and book_name LIKE '三%'
order by publish_date
limit 20,10
5.5 書籍の詳細を表示する
表示フィールドには次のものが含まれます:書籍の基本情報を表示する、ブックマークの有無、書評
-- id=1的图书基本信息
select * from book where id = 1;
-- student_id=1的学生,对book_id=1的图书,未取消收藏 的 收藏记录
select * from book_favorite
where book_id = 1 and student_id = 1 and is_cancelled = 0;
-- student_id=1的学生,对book_id=1的图书,审核通过 的 评论,按创建时间倒序
select * from book_comment
where book_id = 1 and student_id = 1 and `status` = 1
order by gmt_create desc;
5.6 図書の回収と取消
5.6.1 お気に入り
Student_id=1 の学生は book_id=1 の本を収集します
INSERT INTO book_favorite(`student_id`, `book_id`, `favorite_time`, `is_cancelled`, `cancel_time`, `gmt_create`, `gmt_modified`) VALUES (1, 1, '2023-04-08 00:10:00', 0, NULL, '2023-04-08 00:10:00', '2023-04-08 00:10:00');
5.6.2 お気に入りのキャンセル
Student_id=1 の学生の場合、book_id=1 の書籍を収集解除します
update book_favorite
set is_cancelled = 1, cancel_time = '2023-04-08 02:10:00'
where book_id = 1 and student_id = 1;
5.7 書評と書評
5.7.1 コメント
Student_id=1 の生徒が book_id=1 の本にコメント: status=0 承認待ち
INSERT INTO `book_comment`(`student_id`, `book_id`, `score`, `comment`, `status`, `gmt_create`, `gmt_modified`) VALUES (1, 1, 5, '好书值得推荐', 0, '2023-04-08 00:10:00', '2023-04-08 00:10:00');
5.7.2 レビューコメント
verify_user_id=1 の管理者は、id=1 のコメントを確認します: status = 1 承認済み
审批后, 图书评论次数+1
update book_comment
set `status` = 1,
verify_time = '2023-04-08 03:10:00',
verify_user_id = 1,
gmt_modified = '2023-04-08 03:10:00'
where id = 1;
-- 审批后, 图书评论次数+1
update book
comment_count = comment_count+1,
gmt_modified = '2023-04-08 03:10:00'
where id = 1;
5.8 借入および借入レビュー
5.8.1 借入
Student_id=1 の生徒は book_id=1 の本を借ります
INSERT INTO `book_borrowing`(`student_id`, `book_id`, `borrow_time`, `status`, `gmt_create`, `gmt_modified`)
VALUES (1, 1, '2023-04-08 03:10:00', 0, '2023-04-08 03:10:00', '2023-04-08 03:10:00');
5.8.2 借入審査
verify_user_id=1 の管理者は、id=1 の借用記録を確認します: status=1 承認済み
审批后, 图书借阅次数+1
update book_borrowing
set `status` = 1,
verify_time = '2023-04-08 04:10:00',
verify_user_id = 1,
gmt_modified = '2023-04-08 04:10:00'
where id = 1;
-- 审批后, 图书借阅次数+1,状态置为借阅中
update book
set status = 1,
borrow_count = borrow_count+1,
gmt_modified = '2023-04-08 04:10:00'
where id = 1;
5.8.3 返却
id=1 の借用記録、本は返却されました: status = 3 が返却されました
归还后, 更新图书状态为空闲
update book_borrowing
set `status` = 3,
return_time = '2023-04-18 05:10:00',
gmt_modified = '2023-04-18 05:10:00'
where id = 1;
-- 归还后, 更新图书状态为空闲
update book
set status = 0,
gmt_modified = '2023-04-18 05:10:00'
where id = 1;
参考
https://blog.csdn.net/Artificial_idiots/article/details/106830628
https://blog.csdn.net/weixin_44584292/article/details/106636642
やっと
私はすでにこれを見ました, そして、私はあなたのサポートを得ることを願っています.あなたがそれをすることができない場合, あなたはそれを好きにすることができます.ご協力ありがとうございます!! !
文章が良いと思ったら、購読をお待ちしております!上質な呉服や良品は後ほど出します!
サーバー側実戦: SpringBoot+Vue フロントエンド分離プロジェクト実戦
フロントエンド実戦: Vue + SpringBoot フロントエンド分離プロジェクト実戦
再度の説明:この実際の戦闘列は実際の戦闘であり、0 から 1 まで真です! また、最新かつ最も主流のテクノロジーを使用しています。具体的なメリットや企画、技術選びは「序章」で詳しく解説!
高品質のコラム、1本のコラムで十分な作業能力があるため、ポジショニングの点で高品質であることを簡単に識別できます。
私たちは心を込めて高品質の記事を出力し続けることを保証し、購読後にWeChatに私を追加し、ターゲットを絞ったガイダンスを提供します!
さらに、Tian Ge: Tiangang ggに注意を払うことを忘れないでください。新しい記事のリリースを見逃すことは容易ではありません: https://blog.csdn.net/scm_2008
古いルール、私に投票してください、ご支援ありがとうございます!