某建筑公司的业务规则概括说明如下: (1)公司承担多个工程项目,每一项工程有工程号、工程名称与施工人员; (2)公司有多名职工,每一名职工有职工号、姓名、职务(如工程师、技术员)等; (3)公司按照工时和小时工资率支付工资,小时工资由职工的职务决定(技术员的小时工资与工程师不同)。 公司定期制定一个工资报表(如下),请为该建筑公司设计一个工资管理数据库。 工资报表 工程号 工程名称 职工号 姓名 职务 小时工资率 工时 实发工资 A1 花园大厦 1001 齐光明 工程师 65 13 845 1002 李思岐 技术员 60 16 960 1005 葛宇宏 律师 60 19 1140 小计 2945 A2 立交桥 1001 齐光明 工程师 65 15 975 1003 鞠明亮 工人 55 17 935 小计 1910 A3 临江饭店 1002 李思岐 技术员 60 18 7080 1004 诸葛亮 技术员 60 14 840 小计 1920
时间: 2023-05-14 15:04:28 浏览: 79
22-07-28-056_Nop_4.40.4(业务逻辑之业务实体与数据库表的映射规则定义).rar
为该建筑公司设计一个工资管理数据库,可以包括以下表:
1. 工程表:包括工程号、工程名称、施工人员等信息。
2. 职工表:包括职工号、姓名、职务等信息。
3. 工资表:包括工程号、职工号、小时工资率、工时、实发工资等信息。
在工资表中,小时工资率可以根据职工的职务进行区分,例如工程师的小时工资率为100元,技术员的小时工资率为60元,工人的小时工资率为50元。
可以使用 SQL 语句创建这些表:
CREATE TABLE 工程表 (
工程号 INT PRIMARY KEY,
工程名称 VARCHAR(50),
施工人员 VARCHAR(50)
);
CREATE TABLE 职工表 (
职工号 INT PRIMARY KEY,
姓名 VARCHAR(50),
职务 VARCHAR(50)
);
CREATE TABLE 工资表 (
工程号 INT,
职工号 INT,
小时工资率 INT,
工时 INT,
实发工资 INT,
PRIMARY KEY (工程号, 职工号),
FOREIGN KEY (工程号) REFERENCES 工程表(工程号),
FOREIGN KEY (职工号) REFERENCES 职工表(职工号)
);
在实际使用中,可以通过 SQL 语句进行查询和统计,例如:
-- 查询某个工程的工资总额
SELECT SUM(实发工资) FROM 工资表 WHERE 工程号 = 'A1';
-- 查询某个职工的总工资
SELECT SUM(实发工资) FROM 工资表 WHERE 职工号 = '1002';
-- 查询某个工程的工资报表
SELECT 工程号, 工程名称, 职工号, 姓名, 职务, 小时工资率, 工时, 实发工资
FROM 工资表
JOIN 工程表 ON 工资表.工程号 = 工程表.工程号
JOIN 职工表 ON 工资表.职工号 = 职工表.职工号
WHERE 工程号 = 'A1';
阅读全文