问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

学生信息数据库的创建

创作时间:
作者:
@小白创作中心

学生信息数据库的创建

引用
CSDN
1.
https://m.blog.csdn.net/qq_63781342/article/details/144331629

需求分析

学生信息数据库用于存储学生相关信息,包括学生所在院系、学生基础信息、老师信息、学生总成绩、学生各学科成绩以及专业课基础信息。系统需要构建不同用户角色,并为每个角色分配不同的权限,以维护整个数据库。例如,班主任负责维护学生总成绩,各科老师管理各科成绩表及专业基础表,学生用户可以填写和查看自己的基础信息。

关系模型分析

表结构设计

学生基本信息表

基本信息字段
数值类型
约束
id
int
primary key
name
varchar(20)
not null
gender
set('male','female')
null
age
int
null
number
varchar(20)
unique
join_time
date
null
phone
varchar(20)
null

教师基本信息表

基本信息字段
数值类型
约束
id
int
primary key
name
varchar(20)
not null
gender
set('male','female')
null
phone
varchar(20)
null
subject
set('math','chine','english')
null

专业基本信息表

基本信息字段
数值类型
约束
id
int
primary
name
varchar(20)
not null
total
int
not null
department
varchar(20)
not null

学科基本信息表

基本信息字段
数值类型
约束
id
int
primary key
name
set('english','math','china')
null
time
int
default
total
int
not
teacher
varchar(20)
null

总成绩表

基本信息字段
数值类型
约束
id
int
primary key
std_id
int
foreign key
score
float
not null
ranking
int
not null

各科成绩表

基本信息字段
数值类型
约束
id
int
primary key
std_id
int
foreign key
suj_id
int
foreign key
score
float
not null

数据库物理设计与实现

创建数据库并使用

create database if not exists student_database charset utf8mb4;
use student_database;

创建数据表

学生表

create table student_table(
    id int primary key,
    name varchar(20) not null,
    gender set('female','male'),
    age int,
    number varchar(20) unique,
    join_time date,
    phone varchar(20)
);

教师表

create table teacher_table(
    id int primary key,
    name varchar(20) not null,
    gender set('male','female'),
    phone varchar(20),
    subject set('math','english','china')
);

专业表

create table major_table(
    id int primary key,
    name varchar(20) not null,
    total int not null,
    department varchar(20) not null
);

学科表

create table subject_table(
    id int primary key,
    name set('english','math','china'),
    time int default 48,
    total int,
    teacher varchar(20)
);

成绩表

总成绩表

create table total_score_table(
    id int primary key,
    std_id int,
    score float not null,
    ranking int not null,
    constraint fk_std_id foreign key (std_id) references student_table(id)
);

各科成绩表

create table score_table(
    id int primary key,
    std_id int,
    sub_id int,
    score float,
    constraint fk_std_new_id foreign key (std_id) references student_table(id),
    constraint fk_sub_id foreign key (sub_id) references subject_table(id)
);

创建用户并进行授权

用户管理相关语法

查询用户

select * from mysql.user;

创建用户

create user 'user_a'@'localhost' identified by 'old_mima';

修改用户密码

alter user 'user_a'@'localhost' identified by 'new_mima';

删除用户

drop user 'user_a'@'localhost';

权限管理相关语法

查询权限

show grants for 'root'@'localhost';

授予权限

#创建新用户
create user 'user_a'@'localhost' identified by 'old_mima';
#授予权限
grant all privileges on  student_database.student_table to 'user_a'@'localhost';

撤销权限

remove all privileges on student_database.student_table from 'user_a'@'localhost';

创建相应角色

使用不同角色插入数据来模拟数据库的使用与维护

学生

此处应该创建多个学生来进行学生基础信息表的维护,但是所使用的命令相近,因此仅创建一个作为演示。

创建

create user 'student'@'localhost' identified by 'student';

授权

grant all privileges on student_database.student_table to 'student'@'localhost';

老师

此处老师也仅适用一个进行演示

create user 'teacher'@'localhost' identified by 'teacher';
GRANT ALL PRIVILEGES ON student_database.teacher_table TO 'teacher'@'localhost';
GRANT ALL PRIVILEGES ON student_database.subject_table TO 'teacher'@'localhost';
GRANT ALL PRIVILEGES ON student_database.score_table TO 'teacher'@'localhost';

班主任

创建角色

create user 'master'@'localhost' identified by 'master';

授予权限

班主任授予全部数据表的权限,可以直接使用*代替

grant all privileges on student_database.* to 'master'@'localhost';

数据库的使用

学生

使用student用户登录,发现student_database中仅仅可以使用student_table

老师

使用teacher用户登录,可以使用student_database中的teacher_table,score_table和subject_table三个表

班主任

使用master用户登录,可以使用student_database中的所有表

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号