必要な機能:
(1) 生徒、コース、教師などの情報の入力と管理 1 つのコースは 1 人の教師のみが教えることができ、1 人の教師は複数のコースを教えることができます。
(2) 学生が選択する科目、1学期あたり20単位程度
(3) 各講座終了後に講師が成績を評価し、不合格の場合は追試験を行った上で追試験の得点を記録します。
(4) 特定の学生のコース選択状況や、特定のコースの選択学生の状況を詳細に照会することができる
(5) 学生の成績証明書 (合計スコア、平均スコア、失敗したドアの数など) およびコースを受講している学生の数、最高スコア、最低スコア、平均スコアなどの統計情報を統計的に照会する機能。
目次
3.2.1 全体概念構造 E-R 図のリレーショナルモデルへの変換
4.7.1 すべての列を含む、追試験に関する情報を含むスコア表を作成する
I.はじめに
1.1 トピックの背景
情報化時代の到来に伴い、コンピュータ技術も広く使用され、大学の管理に、より高度で便利で効率的な方法が提供されています。大学の学務管理の問題を踏まえると、学生情報管理システムの整備は非常に重要かつ必要な課題となっています。データベース試作学生情報管理システムは、データベース技術をベースに開発された大学管理ソフトウェアです。
このシステムの主な目的は、学生の基本情報、履修情報、成績情報、履修選択情報などを管理することです。学生情報管理システムでは、学生の氏名、学籍番号、性別、生年月日、出身地、連絡先などの基本情報をはじめ、学生の成績や進路選択などを一元管理できます。同時に、システムにはアクセス制御機能があり、情報の盗難や改ざんを効果的に防止できます。このシステムにより、学生の総合的かつきめ細かな管理が可能となり、業務効率の大幅な向上と人的資源への投資の削減を実現します。
1.2 コース設計の目的
(1) データベース技術の実践: 学生情報管理システムは、基本的なデータベース アプリケーションとして基本的な操作を備えており、多くのテーブルやフィールドは使用しませんが、非常に実用的であり、学生はすぐにデータベース ソフトウェアを使い始め、一般的な事項を理解できます。データベースの概念と基本、機能。
(2) 学習データベースの設計と実装: 学生情報管理システムには複数の関連テーブルの設計が含まれ、学習システムの設計と実装を通じて、学生はエンティティと関係のモデリング、テーブルの設計、属性の定義、インデックスの設定、構文の使用など。
(3) 学生の情報管理能力の育成:学生情報管理システムの機能は比較的充実しており、学生は情報管理の基本的な方法と技術を学び、情報の入力、照会、管理を通じて情報管理能力を向上させることができます。
(4) 学生の総合的な応用能力の向上:学生情報管理システムの設計と実装には、データ構造、アルゴリズム、データベース技術などの複数の分野の知識が必要です。学生の総合的な応用能力は、実践を通じて向上することができます。
1.3 コース設計タスク
1. 要件分析:学生情報管理システムの用途、機能、性能、品質に関する要件を明確にし、対応する製品要件仕様を策定します。
2. 概念設計: 要件仕様に従って、エンティティと関係をモデル化し、ER 図とテーブル構造を設計し、データベースのストレージ要件を明確にします。
3. 論理設計: データベースのモデリング、SQL ステートメントやデータ ディクショナリの作成など、システムの論理アーキテクチャを設計します。
4. 物理設計: データベース、テーブル、インデックスの作成、保管、管理を含む、システムの物理アーキテクチャを設計します。
5. 実装とテスト:設計要件に従って、記録の追加、変更、削除、クエリ、データ統計、レポート分析などを含む学生情報管理システムのさまざまな機能を実装およびテストします。
2. 需要分析
このシステムの利用者は学生アパートの管理人や教職員であり、学生情報の照会・管理、寮の割り当て・調整、来訪者登録などの日常のアパート管理業務が主な業務となります。上記の要件の分析に基づいて、このシステムは実装時に次の機能を備えている必要があります。
◎生徒の基本情報管理:生徒の基本情報を追加、変更、照会、削除します。
◎教師の基本情報管理:教師の基本情報を追加、変更、照会、削除します。
◎基本コース情報管理:基本コース情報の追加、変更、照会、削除。
◎科目選択得点の基本情報管理:科目選択情報、得点の追加、変更、問い合わせ、削除、補点入力。
上記の分析に基づいて、このシステムのシステム アーキテクチャ図を設計できます。
3. システムデータベースの設計
3.1 構造設計の概念
要件分析に基づいて情報構造が抽象化され、システムの E-R 図が得られます。
部分的な E-R 図
3.1.1 生徒の E-R 図
3.1.2 教師の E-R 図
3.1.3 コース E-R 図
3.1.4 コース選択 E-R 図
3.1.5 全体の E-R 図
3.2 論理構造設計
3.2.1 全体概念構造 E-R 図のリレーショナルモデルへの変換
関係モデル:
学生 (学生 ID 番号、名前、性別、連絡先情報)
教師 (教師番号 #、名前、性別、連絡先情報)
课程(课程号#,教师编号,课程名,学分)
选课(课程编号#,学号#,成绩类型#,成绩)
3.2.2 データモデルの最適化
- データの依存関係を特定する
1. 学生 (学生 ID 番号、名前、性別、連絡先情報)
3番目のパラダイム: 学生証 -> (名前、性別、連絡先情報)
2. 教師 (教師番号番号、名前、性別、連絡先情報)
第 3 正規形: 教師番号->(名前、性別、連絡先情報)
第三范式:课程号->(教师编号,课程名,学分)
第三范式:(课程编号,学号,成绩类型)->(成绩)
- 各関係モデル間のデータの依存関係を最小限に抑え、冗長性を排除します。
分析の結果、この関係にはデータの冗長性がないことがわかりました。生徒関係の中学校番号 Sno が生徒の情報を決定します。教師番号は教師関係の主キーとして使用され、コース番号は教師関係の主キーとして使用されます。コース関係では主キー、コース選択リレーションでは(コース番号、学生番号、得点タイプ)を合わせて主キーとしてテストの得点を一意に決定します。追試験があるため、得点タイプは次のとおりです。得点タイプの習慣は通常試験か追試験かを選択できます。
3.3 物理構造設計
3.3.1 学生情報テーブルの構成
シリアルナンバー |
キャラクター名 |
データの種類 |
長さ |
説明する |
1 |
学生証 |
チャー |
10 |
学籍番号、主キー |
2 |
名前 |
可変長文字 |
20 |
空は許可されません |
3 |
性別 |
チャー |
2 |
空は許可されません 制約をチェックする |
4 |
連絡先 |
チャー |
11 |
空を許可する |
5 |
誕生日 |
日付 |
空を許可する |
3.3.2 教師情報テーブルの構造
シリアルナンバー |
キャラクター名 |
データの種類 |
長さ |
説明する |
1 |
教師番号 |
チャー |
10 |
教師番号、主キー |
2 |
名前 |
可変長文字 |
20 |
空は許可されません |
3 |
性別 |
チャー |
2 |
空は許可されません 制約をチェックする |
4 |
連絡先 |
チャー |
11 |
空を許可する |
3.3.3 コース情報テーブルの構成
シリアルナンバー |
フィールド名 |
データの種類 |
長さ |
説明する |
1 |
コース番号 |
チャー |
10 |
主キー |
2 |
コース名 |
可変長文字 |
20 |
空は許可されません |
3 |
教師番号 |
チャー |
10 |
教師番号、外部キー |
4 |
クレジット |
タイニーント |
空ではない チェック制約 |
3.3.4 科目選択得点情報テーブルの構成
シリアルナンバー |
フィールド名 |
データの種類 |
長さ |
説明する |
1 |
学生証 |
チャー |
10 |
主キー、外部キー |
2 |
コース番号 |
チャー |
10 |
主キー、外部キー |
3 |
グレードタイプ |
チャー |
2 |
主キー チェック制約 |
4 |
分数 |
タイニーント |
空ではない チェック制約 |
四、数据库实现
4.1 データベースの作成
データベースSMSを作成する
プライマリ上で
(
名前=SMS、
ファイル名='D:\SQLSERVER_DB\sms.mdf',
サイズ=20MB、
MAXsize=無制限、
ファイルの増加=10MB
)
ログオン
(
名前=sms_log、
ファイル名='D:\SQLSERVER_DB\sms_log.ldf',
サイズ=2MB、
最大サイズ=10MB、
ファイルの増加=10%
)
4.2 データベーステーブルの作成
4.2.1 学生情報テーブルの作成
テーブルを作成する Student(
sno char(10) 主キー、
[名前] varchar(20) が null ではありません。
sex char(2) not null check(sex='男' or sex='女'),
電話番号(11)
)
4.2.2 教師情報テーブルの作成
テーブルを作成します
sno char(10) 主キー、
[名前] varchar(20) が null ではありません。
sex char(2) not null check(sex='男' or sex='女'),
電話番号(11)
)
4.2.3 コース情報テーブルの作成
テーブルコースの作成(
cno char(10) 主キー、
[cname] varchar(20) が null ではありません。
tno char(10)、
Credit tinyint check(1 と 2 の間のクレジット)、--credit
制約 FK_Teacher_tno 外部キー (tno) は教師 (tno) を参照します
)
4.2.4 コース選択情報テーブルの作成
テーブルグレードを作成(
cno char(10)、
スノーチャー(10)、
gtype char(2) check(gtype in ('zc','bk'))、--score type、zc は通常、bk は追試です
Credit tinyint check(0 から 100 までのクレジット)、--スコア
制約 PK_cno_tno_gtype 主キー(cno,sno,gtype)、--結合主キー
制約 FK_course_cno 外部キー(cno) 参照 course(cno)、--外键
制約 FK_student_sno 外部キー (sno) は学生 (sno) を参照します --外键
)
4.3 関係図は次のとおりです
4.4データの挿入
--学生情報を入力します
insert into student values('1932101101','赵庆','男','15170000001','2000-11-10');
insert into student values('1932101102','尹遥','男','15170000002','2001-10-10');
学生の値に挿入('1932101103'、'ユ ジュン'、'男性'、'15170000003'、'2002- 06- 10');
学生の値に挿入('1932101104'、'かぐや'、'女性'、'15170000004'、'2003-11-10& #39;);
学生の値に挿入('1932101105'、'チェンチェン'、'女性'、'15170000005'、'2004-11-10& #39;);
--教師情報を挿入
教師の値に挿入('1000000001'、'Wang Xin'、'女性'、'19170000001');
insert into teacher values('1000000002','邓丁','男','19170000002');
教師の値に挿入('1000000003'、'リータオ'、'男性'、'19170000003');
--コース情報を挿入
コース値に挿入('zyjc000001','データベース原則','1000000001',2);
コース値に挿入('zyjc000002','Java プログラミング','1000000001',2);
コース値に挿入('zyhx000003','オペレーティング システム','1000000002',1);
コース値に挿入('zyhx000004','コンピュータ ネットワーク','1000000002',2);
コース値に挿入('zyjc000005','コンピュータ構成の原則','1000000003',1);
insert into course values('zyjc000006','高等数学','1000000003',2);
--コース選択情報を挿入
成績値に挿入('zyjc000001','1932101101','zc',85);
成績値に挿入('zyjc000001','1932101102','zc',75);
成績値に挿入('zyjc000001','1932101103','zc',65);
成績値に挿入('zyjc000001','1932101104','zc',95);
成績値に挿入('zyjc000001','1932101105','zc',70);
成績値に挿入('zyjc000002','1932101101','zc',85);
成績値に挿入('zyjc000002','1932101102','zc',80);
成績値に挿入('zyjc000002','1932101103','zc',70);
成績値に挿入('zyhx000003','1932101101','zc',85);
成績値に挿入('zyhx000003','1932101102','zc',80);
成績値に挿入('zyhx000003','1932101103','zc',75);
成績値に挿入('zyhx000003','1932101104','zc',70);
成績値に挿入('zyhx000003','1932101105','zc',65);
成績値に挿入('zyhx000004','1932101101','zc',85);
成績値に挿入('zyhx000004','1932101102','zc',70);
成績値に挿入('zyhx000004','1932101103','zc',60);
成績値に挿入('zyhx000003','1932101104','bk',99);
成績値に挿入('zyhx000003','1932101105','bk',94);
4.5.1 学生テーブルに学生情報を追加する
生徒に挿入する
値('1932101106'、'チェン・チャン'、'女性'、'15170000006');
データ挿入
4.5.2 Chen Chang の携帯電話番号を変更する
学生セットを更新する tel='15170000016'ここで、sno='1932101106';
データの変更
4.5.3 チェン・チャンの個人情報の削除
学生から削除 where sno='1932101106';
データの削除
4.6 データクエリ
4.6.1 単純なクエリ
学生テーブル情報のクエリ
学生から * を選択します。
4.6.2 ネストされたクエリ
最年長の生徒に関する情報を照会する
select * from students where Birth=(select min(birth) from students);
4.6.3 ファジークエリ
Hui という名前のすべての生徒の情報を照会します
select * from students where sname like '辉%';
4.6.4 接続クエリ
コース名と講師を確認する
c.cname、t.tnameを選択します
Cコースから、T先生
ここで、c.tno=t.tno;
学生番号1932101104のコース選択状況を確認する
*グレードgから選択
c.cno=g.cno でコース c に参加します
ここで、g.sno='1932101104';
4.6.5 グループクエリ
各教師が教えたコースの数を問い合わせる
tno によるコースグループから count,tno として COUNT(*) を選択します。
コース内の選択学生の数を問い合わせる
COUNT(*) を count,c.cno として選択します
コースCから
c.cno=g.cno でグレード g を左結合
c.cno ごとにグループ化
c.cno='zyhx000004' を持つ
4.6.6 クエリの並べ替え
コース番号zyjc000001の成績情報を成績の降順に問い合わせます
*グレードから選ぶ
ここで、cno='zyjc000001'
クレジット表記による注文。
4.6.7聚合函数
学生の成績証明書の統計 (合計スコア、平均スコア、失敗したドアの数)
選択する
スノ、
私はいる(信じている)
AVG(クレジット) 平均、
COUNT(CASE WHEN Credit<60 THEN 1 END) as count
学年から
ここで、sno='1932101104'
sno ごとにグループ化します。
コース受講者数、最高点、最低点、平均成績の統計
選択する
c.cno、
COUNT(g.sno) カウント、
MAX(g.credit) 最大、
MIN(g.クレジット) 分、
AVG(g.クレジット) 平均
コースCから
g.cno=c.cno でグレード g を左結合
ここで、c.cno='zyhx000003'
c.cno ごとにグループ化します。
4.7 ビュー
4.7.1 すべての列を含む、追試験に関する情報を含むスコア表を作成する
ビュー v_grade_bk を作成する
として
select * from Grade where gtype='bk';
v_grade_bk から * を選択;
4.7.2 専門基礎科目のみを含む科目情報テーブルを作成する
ビューの作成 v_course_zyjc
として
select * from course where cno like 'zyjc%';
v_course_zyjc から * を選択;
5. まとめ
データベースコースにおける学生情報管理システムの設計実験により、データベースの概念と応用についてより深く理解することができました。実験では、学生情報管理システムの設計・導入を通じてデータベースの具体的な運用を学び、データベースのメリット・デメリットや活用シーンを明らかにしました。一方で、データベース設計の無理や適用シナリオの不明瞭さなど、実験中に多くの問題点が発生したことも判明し、今後の検討と実践で改善を続けていく必要がありました。概念設計、論理設計、物理設計など、さまざまな側面での実践的な操作と実践があります。実験中には、テーブルの設計が不十分である、インデックスの設定が適切でない、SQL 文の作成が十分でない、インデックスの設計が十分に正確でないなど、多くの困難や問題に遭遇しました。段階的な解決策を経て、最終的に安定的かつ効率的な学生情報管理システムを設計しました。情報の管理と活用におけるデータベースの重要性と必要性についての理解が深まり、実務における能力とスキルが向上しました。これからも勉強と実践でデータベースのスキルを向上させ、常に改善と挑戦を続けていきます。