データベースの原則とアプリケーション コース設計レポート - 給与管理システム

1。概要

経済の発展に伴い、企業は大規模化・大規模化に向けて発展しており、大企業や中堅企業では従業員や役職など給与管理に関わる情報が飛躍的に増加しています。この場合、従業員の賃金の手動処理のみに依存することは無力であるだけでなく、非常に間違いが発生しやすくなります。中小企業の賃金をどう設計するか、新規従業員の追加、古い従業員の削除、給与照会、統計などの一連の作業を人間ではなくコンピューターが行います。このようにして、オフィススタッフは給与管理のタスクを簡単かつ迅速に完了することができます。

企業や団体の給与支払いの場合、金額が大きすぎる必要はありません。必要なのは、操作が簡単で実用的な機能を備え、データ管理と財務部門、部門のその他の関連部門、流通部門のニーズを同時に満たすことができるシステムだけです。

賃金の一元管理を実現します。財務担当者はこれを使用して、部門の人員と賃金を追加、削除、変更、照会することができ、システムは賃金配分で支払われる賃金総額を自動的に計算することができ、同時に、システムは次のことも行うことができます。従業員と賃金管理に関する多角的なクエリ。

上記の理由から、企業給与管理システムはコンピュータを利用して安全に保存し、高速に計算し、総合的な統計を行い、給与管理のシステム化、標準化、自動化を実現しています。企業給与管理システムは典型的な情報管理システム (MIS) であり、バックグラウンド データベースにはMySQLデータベースが採用されており操作が簡単で使いやすいという利点があります

2. 需要分析

2.1 要件の説明

給与管理システムは、各種給与情報の管理と各種情報の安全管理をより良く実現するためのシステムです。このシステムは主に従業員のさまざまな給与情報のニーズを確認するために設計されており、データを適切に管理できます。このシステムの主な機能は次の部分で構成されます。

調査と分析の結果、給与管理情報システムは主に次の機能を実行します。

(1)従業員基本情報モジュール:従業員の基本情報。

(2) 給与情報モジュール: 従業員の月々の基本給、役職給、水道・電気代、手当給与、給与控除、実際の支払額。

(3) 部門情報モジュール:会社の各部門の番号、名前、担当者、および番号。

(4) 勤怠モジュール: 従業員の遅刻と欠勤の数を記録します。

(5) 手当モジュール: 従業員の残業状況を記録し、手当を配布します。

(6)従業員情報管理モジュール:管理者による必要な情報の問い合わせは、従業員の基本情報の追加、削除、変更、問い合わせなどを行う。

(7)従業員給与管理モジュール:管理者による必要な情報の問い合わせは、従業員給与情報の追加、削除、変更、問い合わせである。

2.2 データフロー図

トップレベルのデータフロー図 

2.3 データディクショナリ

2.3.1 データ項目の説明

1. データ項目名:社員番号

エイリアス: w_number

値の範囲: 0000 ~ 9999

意味の説明:各従業員の数

タイプ: 文字

長さ: 4

2. データ項目名:従業員名

別名: w_name

値の範囲: 1 ~ 4

意味の説明:各従業員の名前

タイプ: varchar

長さ: 8

3. データ項目名:従業員性別

別名: セックス

値の範囲: 「男性」または「女性」

意味の説明:各従業員の性別

タイプ: 文字

長さ: 2

4. データ項目名:基本給

別名:basic_wage

値の範囲: 整数

意味の説明:各従業員の基本給

タイプ: int

5. データ項目名:生年月日

別名:誕生日

意味の説明:各従業員の生年月日

タイプ: 日時

2.3.2データ構造の説明 

1. 名前: 従業員

意味の説明: 従業員情報

構成構成:社員番号+氏名+性別+生年月日+所属部署+学歴+役職

2. 名前: 給与

意味説明: 給与情報

構成構成:従業員数+基本給+役職給+水道・電気代+手当給+差し引かれた給料+実際の給料

賃金を支払う

2.3.3 データフローの説明

1. データフロー名: 従業員情報を追加します

簡単な説明: 新入社員情報入力

データ フローのソース: 会社のマネージャー

データが流れる場所: 従業員情報

データフロー構成:社員番号+氏名+性別+生年月日+所属部署+学歴+役職

2.3.4 データフローの説明

1. ストレージ名: 従業員記録ストレージ

説明: 全従業員のすべての基本情報を記録します。

入力: 従業員の基本情報

出力: すべての従業員情報

データ構造:社員番号+氏名+性別+生年月日+所属部署+学歴+役職

2.3.5 処理の定義

1. プロセス名:従業員情報処理

説明: 従業員の基本情報を処理します。

入力データストリーム: ターミナル

出力データフロー: 従業員情報ストレージ

3. 概念的な構造設計

3.1 コンセプトデザイン

3.1.1 エンティティ分析の説明

ユーザーの観点から見ると、データベースのニーズは主にデータベース テーブルの追加、削除、変更、クエリに反映されます。したがって、データベース構造は、入力と出力という 2 つの要素を同時に満たす必要があります。データ設計を行う場合は、まずデータを収集し、次にデータ構造を分析し、最後にデータを処理する必要があります。このシステムの要件に従って、次の主要なデータ項目とデータ構造が設計されています。

(1) 従業員情報の実体:従業員番号、氏名、性別、所属部署、役職、学歴、生年月日。

(2)部門情報実体:部門番号、部門名、部門長、部門番号。

(3) 給与情報実体:従業員番号、基本給、役職給、水道・電気代、補助給、控除給、実際の支払額。

(4) 勤怠情報実体:従業員番号、氏名、性別、遅刻時間、欠勤時間。

(5) 補助金情報の実体:従業員番号、氏名、性別、残業日数、手当の有無、残業の種類、残業時間。

3.1.2 エンティティ エンティティ グラフ

従業員情報エンティティを図 3.1 に示します。

ユーザー情報エンティティ図の設計 

部門情報エンティティを図 3.2 に示します。

部門情報エンティティ図の設計 

給与情報エンティティを図 3.3 に示します。

給与情報エンティティ図の設計 

出席情報エンティティを図 3.4 に示します。

勤怠情報エンティティ図の設計

補助金情報エンティティを図 3.5 に示します。

補助金情報エンティティ図の設計 

3.1.3 ER図

給与管理システムのローカルER図を図3.6に示します。

給与管理システムの一部ER図設計 

給与管理システムのローカル ER 図を図 3.7 に示します。

給与管理システムの一部ER図設計 

給与管理システムのローカル ER 図を図 3.8 に示します。

給与管理システムの一部ER図設計 

給与管理システムのローカル ER 図を図 3.9 に示します。

給与管理システムの一部ER図設計 

給与管理システムの一般的なER図を図3.10に示します。

給与管理システムの一般的なER図設計

4.1 論理構造設計

4.1関係スキーマ

関係モード:従業員情報(従業員番号、氏名、性別、生年月日、所属、

学歴、役職)

モード決定: 従業員情報 ∈ 2NF、および各非主属性は従業員情報に依存する伝達関数を持たない

情報の主関係キーなので、従業員情報 ∈ 3NF

関連モード:部門情報(部門番号、部門名、部門長、部門番号)

モード決定: 部門情報 ∈ 2NF、および各非主属性は部門情報に依存する関数を伝達しない

情報の主関係キーなので、部門情報 ∈ 3NF

関係モデル: 給与情報 (従業員番号、基本給、ポスト給与、公共料金、手当)

賃金、控除された賃金、支払われた金額)

モード決定: 給与情報 ∈ 2NF、および各非主属性の伝達関数は給与情報に依存しない

情報の主関係キーなので、給与情報 ∈ 3NF

関係モード:勤怠情報(従業員番号、氏名、性別、遅刻者数、欠勤者数)

モード判定:勤怠情報∈ 2NF、かつ各非メイン属性は勤怠情報に依存する関数を伝達しない

情報の主関係キーなので、勤怠情報 ∈ 3NF

関係モード:手当情報(社員番号、氏名、性別、残業時間、残業日数、

残業の種類、手当)

モード決定: 補助金情報 ∈ 2NF、および各非主属性は補助金情報に依存する関数を伝達しない

情報の主関係キーなので、許容情報 ∈ 3NF

5. 物理構造設計

5.1 データベースとテーブル名の定義

データベース名:

賃金

データベーステーブル名:

  1. 社員情報フォーム:スタッフ
  2. 部門情報フォーム: 部門
  3. 給与情報表:賃金
  4. 出席情報フォーム: 出席
  5. 手当情報シート:手当

5.2ストレージエンジン

mysql データベースを使用し、ストレージ エンジンとして InnoDB を選択します。

5.3 データベースのストレージ構造の設計

システムのパフォーマンスを向上させるために、アプリケーションの状況に応じて、データの変動部分と安定部分を区別することがよくあります。

アクセス部分は、アクセス頻度の低い部分とは別に保存されます。

現在のコンピュータには複数のディスクが搭載されているため、テーブル (従業員情報テーブルなど) とインデックスを別のディスクに配置します。

クエリ プロセスでは、I/O の読み取りと書き込みの効率が大幅に向上し、より大きなパーティションの場合は、2 つの

ディスク上ではアクセス速度が向上し、マルチユーザー環境でより効果的です。システムを改善するためです。

ログ ファイルのパフォーマンスとデータベース オブジェクト (テーブル、インデックスなど) は別のディスクに配置されます。同時に、

このシステムはマルチユーザーであることを考慮して、効率を向上させるために、データベースのバックアップのデータとログ ファイルが保持されます。

ディスクに保存されます。

データベースの頻繁にアクセスされる部分は次のとおりです。

従業員(従業員番号、氏名、性別、生年月日、所属...)

部署名(部署名、部署名、部署名、部署名…)

給与 (従業員番号、基本給、ポスト給与、光熱費など)

出勤状況(従業員番号、氏名、性別、遅刻者数、欠席者数)

アクセス頻度の低いセクションには次のものが含まれます。

基本給(給与水準、給与額)

給与後(給与水準、給与額)

データベース設計の初期段階では、将来のデータベースを物理的に最適化するために、

システムは変数を構成し、分配係数を保存し、これらの変数に適切なデフォルト値を割り当てます。しかし、これらの値はそうではありません

それぞれのアプリケーション環境に適したものにする必要があるため、物理設計を行う際には、これらの変数を再割り当てして改善します。

システムのパフォーマンス。ハードウェア デバイス、サーバー オペレーティング システム、およびデータベースを選択するときは、段階的に実行できるようにすることを考慮する必要があります。

増やして拡張する。

システム変数を構成するときは、データベースを同時に使用するユーザーの数、同時に開かれるデータベースの数に注意してください。

オブジェクトの数、メモリ割り当てパラメータ、バッファ割り当てパラメータ、タイム スライス サイズ、データベース サイズ、ロック

番号など これらのパラメータ値は、データベースの保存時間とストレージ領域の割り当てに影響します。 

5.4 データベースの保存方法の設計

このシステムでは、逐次検索が採用され、平均して n/2 回検索され、B+ ツリー インデックスが確立されます。平均検索回数は、B+ ツリーの層の log2 n+1 です。したがって、B+ ツリーがインデックスとして選択され、設計プロセスで関係のコードがインデックス化されます。

5.5 データベーステーブルの構造

(1) 従業員情報フォーム

属性名

フィールド名

データの種類

長さ

空っぽでも許されるのか

主キーかどうか

従業員ID

従業員_いいえ

文字

4

禁じられている

はい

名前

名前

可変長文字

8

禁じられている

いいえ

性別

セックス

文字

2

許可する

いいえ

生年月日

誕生日

日付時刻

許可する

いいえ

デパートメント

可変長文字

20

禁じられている

いいえ

教育レベル

教育レベル

可変長文字

20

許可する

いいえ

職名

タイトル

文字

12

許可する

いいえ

(2) 部門情報フォーム

属性名

フィールド名

データの種類

長さ

空っぽでも許されるのか

主キーかどうか

部門番号

コード

文字

4

禁じられている

はい

部署名

名前

可変長文字

20

禁じられている

いいえ

部長

マネジャー

可変長文字

20

禁じられている

いいえ

部門の人員数

整数

10

禁じられている

いいえ

(3) 給与情報フォーム

属性名

フィールド名

データの種類

長さ

空っぽでも許されるのか

インデックスの有無にかかわらず

従業員ID

コード

文字

4

禁じられている

はい

基本給

基本賃金

可変長文字

20

禁じられている

いいえ

賃金の仕事

事後賃金

可変長文字

20

禁じられている

いいえ

公共料金

お金

浮く

10

禁じられている

いいえ

手当給与

補助金

可変長文字

10

禁じられている

いいえ

給与控除

控除

可変長文字

10

禁じられている

いいえ

実際の量

事実

可変長文字

10

禁じられている

いいえ

(4) 出席情報フォーム

属性名

フィールド名

データの種類

長さ

空っぽでも許されるのか

インデックスの有無にかかわらず

従業員ID

コード

文字

4

禁じられている

はい

名前

名前

可変長文字

8

禁じられている

いいえ

性別

セックス

文字

2

禁じられている

いいえ

遅刻者数

遅延合計

整数

10

禁じられている

いいえ

欠席回数

送信済

整数

10

禁じられている

いいえ

(5) 補助金情報フォーム

属性名

フィールド名

データの種類

長さ

空っぽでも許されるのか

インデックスの有無にかかわらず

従業員ID

コード

文字

4

禁じられている

はい

名前

名前

可変長文字

8

禁じられている

いいえ

性別

セックス

文字

2

禁じられている

いいえ

時間とともに

時間とともに

可変長文字

10

許可する

いいえ

残業日数

昼間

浮く

10

許可する

いいえ

残業種類

スーパータイプ

可変長文字

10

許可する

いいえ

手当

手当

整数

10

許可する

いいえ

5.6 データベースモデル

データベースモデル

6. データベースの実装

6.1 データベースの作成

CREATE DATABASE 賃金 CHARACTER SET utf8;

6.2 データベーステーブルの作成

(1) 従業員情報フォーム

CREATE TABLE `staff` (

  `employee_No` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL、

  `name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sex` char(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `birthday` datetime(0) NULL DEFAULT NULL,

  `dept` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `education_level` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `title` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`employee_No`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

基础数据初始化:

INSERT INTO `staff` VALUES ('001', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

INSERT INTO `staff` VALUES ('002', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

INSERT INTO `staff` VALUES ('003', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

INSERT INTO `staff` VALUES ('004', '张三', '女', '1999-01-21 00:00:00', '部门', '本科', '无');

效果图:

 图6.1 员工信息表运行效果

(2)部门信息表

CREATE TABLE `dept`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `manager` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sum` int(0) NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `dept` VALUES ('001', '部门1', '张三', 10);

INSERT INTO `dept` VALUES ('002', '部门2', '张三', 10);

INSERT INTO `dept` VALUES ('003', '部门2', '张三', 10);

效果图:

 图6.2 部门信息表运行效果

(3)工资信息表

DROP TABLE IF EXISTS `wages`;

CREATE TABLE `wages`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `baseWages` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `postWages` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `money` float(10, 0) NULL DEFAULT NULL,

  `subsidy` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `deduction` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `wages` VALUES ('001', '2000', '1000', 1000, '1000', '');

INSERT INTO `wages` VALUES ('002', '2000', '1000', 1000, '1000', '');

INSERT INTO `wages` VALUES ('003', '2000', '1000', 1000, '1000', '');

INSERT INTO `wages` VALUES ('004', '2000', '1000', 1000, '1000', '');

效果图:

 图6.3 工资信息表运行效果

(4)考勤信息表

CREATE TABLE `attendance`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `delaysum` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `misssum` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `attendance` VALUES ('001', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('002', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('003', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('004', '张三', '女', '11', '0');

INSERT INTO `attendance` VALUES ('005', '张三', '女', '11', '0');

效果图:

 图6.4 考勤信息表运行效果

(5)津贴信息表

CREATE TABLE `allowance`  (

  `code` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `sex` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `overtime` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  `allowance` int(0) NULL DEFAULT NULL,

  `overday` float(10, 0) NULL DEFAULT NULL,

  `overtype` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,

  PRIMARY KEY (`code`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

数据初始化:

INSERT INTO `allowance` VALUES ('001', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('002', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('003', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('004', '张三', '女', '0', 0, 0, '0');

INSERT INTO `allowance` VALUES ('005', '张三', '女', '0', 0, 0, '0');

运行效果图:

 图6.5 津贴信息表运行效果

 

おすすめ

転載: blog.csdn.net/lf21qp/article/details/131611602