图书管理系统之MySql数据库(详细全解)
小白写的时候 注意外键关系,要先输入publisher和jobs的数据,才能写底下两个表数据。(Mysql 8.0,datagrip实现,如果不想看图和架构,请直接看建表语句)
大体内容:
以下任务均基于SQLServer的pubs数据库的如下几张表的,雇员表employee、职务表jobs、出版社表publishers、书名表titles,他们的表结构分别如下:

数据库解释:数据库是一个跨国出版集团的数据库。出版集团中有若干出版社,每个雇员属于一个出版社。出版社出版了若干出版物。
设计要求:
Employee雇员表
|
字段名称 |
字段类型 |
描述 |
|
emp_id |
int |
雇员ID,PK |
|
fname |
varchar |
姓 |
|
minit |
varchar |
中间名 |
|
lname |
varchar |
名 |
|
job_id |
int |
职位ID FK |
|
job_lvl |
int |
雇员工资 |
|
pub_id |
int |
所在出版社ID FK |
|
hire_date |
datetime |
入职时间 |
Jobs职位表
|
字段名称 |
字段类型 |
描述 |
|
job_id |
int |
职位ID PK |
|
job_desc |
varchar |
职位描述 |
|
Max_lvl |
int |
该职位最高工资 |
|
Min_lvl |
int |
该职位最低工资 |
Publisher出版社表
|
字段名称 |
字段类型 |
描述 |
|
pub_id |
int |
出版社ID,PK |
|
pub_name |
varchar |
出版社名称 |
|
city |
varchar |
出版社所在城市 |
|
state |
varchar |
出版社所在的州 |
|
country |
varchar |
出版社所在的国家 |
Title出版物表
|
字段名称 |
字段类型 |
描述 |
|
titles_id |
int |
出版物ID PK |
|
title |
varchar |
出版物名称 |
|
type |
varchar |
出版物类型 |
|
pub_id |
int |
出版社ID,FK |
|
price |
decimal |
出版物价格 |
|
advance |
int |
预定量 |
|
yoralty |
int |
|
|
ytd_sales |
int |
销售量 |
|
notes |
varchar |
出版物描述 |
|
pub_date |
datetime |
出版时间 |
插入数据:(测试用,需要手动插入)
employee表数据:


publisher表如下:

title表如下:

job表如下:

代码实现部分:
(Mysql 8.0,datagrip实现,如果不想看图和架构,请直接看建表语句)
整体架构的图:
小白写的时候 注意外键关系,要先输入publisher和jobs的数据,才能写底下两个表数据

各个表情况一览:
employee:

publisher:

title:

job:

建表语句:
CREATE TABLE `publisher` (
`pub_id` int NOT NULL COMMENT '出版社ID,PK',
`pub_name` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '出版社名称',
`city` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '出版社所在城市',
`state` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '出版社所在州',
`country` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '出版社所在国家',
PRIMARY KEY (`pub_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='出版社表'
CREATE TABLE `jobs` (
`job_id` int NOT NULL COMMENT '职务id,PK',
`job_desc` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '职位描述',
`Max_lvl` int DEFAULT NULL COMMENT '最高工资',
`Min_lvl` int DEFAULT NULL COMMENT '最低工资',
PRIMARY KEY (`job_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='职位表'
CREATE TABLE `employee` (
`emp_id` int NOT NULL COMMENT '雇员ID,PK',
`fname` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '姓',
`minit` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '中间名',
`lname` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '名',
`job_id` int DEFAULT NULL COMMENT '职位ID,FK',
`job_lvl` int DEFAULT NULL COMMENT '雇员工资',
`pub_id` int DEFAULT NULL COMMENT '所在出版社的ID FK',
`hire_date` datetime DEFAULT NULL COMMENT '入职时间',
PRIMARY KEY (`emp_id`),
KEY `employee_jobs_job_id_fk` (`job_id`),
KEY `employee_publisher_pub_id_fk` (`pub_id`),
CONSTRAINT `employee_jobs_job_id_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`),
CONSTRAINT `employee_publisher_pub_id_fk` FOREIGN KEY (`pub_id`) REFERENCES `publisher` (`pub_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='雇员表'
CREATE TABLE `titles` (
`titles_id` int NOT NULL COMMENT '出版物ID PK',
`title` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '出版物名称',
`type` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '出版物类型',
`pub_id` int DEFAULT NULL COMMENT '出版社ID,FK',
`price` decimal(10,0) DEFAULT NULL COMMENT '出版物价格',
`advance` int DEFAULT NULL COMMENT '预定量',
`yoralty` int DEFAULT NULL,
`ytd_sales` int DEFAULT NULL COMMENT '销售量',
`notes` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`pub_date` datetime DEFAULT NULL COMMENT '出版时间',
PRIMARY KEY (`titles_id`),
KEY `titles_publisher_pub_id_fk` (`pub_id`),
CONSTRAINT `titles_publisher_pub_id_fk` FOREIGN KEY (`pub_id`) REFERENCES `publisher` (`pub_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='出版物表'
然后插入数据即可
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)