首页 > 数据库 >10-DBA命令和数据库设计的三范式

10-DBA命令和数据库设计的三范式

时间:2023-07-30 22:15:48浏览次数:48  
标签:10 范式 DBA 数据库 学生 编号 主键

10-DBA命令和数据库设计的三范式

课程目标

掌握新建用户、授权、回收权限、导出导入、第一范式、第二范式、第三范式、三范式总结。

10.1新建用户

create user username identified by 'password';

说明:username——你将创建的用户名, password——该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

例如:

create user xme361 identified by '123';

10.2 授权

1.命令详解

MySQL> grant all privileges on dbname.tbname to 'username'@'login ip' identified by 'password' with grant option;

  1. dbname=*表示所有数据库
  2. tbname=*表示所有表
  3. login ip=%表示任何ip
  4. password为空,表示不需要密码即可登录
  5. with grant option; 表示该用户还可以授权给其他用户

2.细粒度授权

首先以root用户进入MySQL,然后键入命令:

grant select,insert,update,delete on *.* to xme361 @localhost Identified by "123"; 

如果希望该用户能够在任何机器上登陆MySQL,则将localhost改为 "%" 。

3.粗粒度授权

我们测试用户一般使用该命令授权,

grant all privileges on *.* to 'xme361'@'%' identified  by "123"; 

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

grant all privileges on *.* to 'hk361'@'%' identified by "123" with grant option;

 privileges包括:

  1. alter:修改数据库的表
  2.  create:创建新的数据库或表
  3.  delete:删除表数据
  4.  drop:删除数据库/表
  5.  index:创建/删除索引
  6.  insert:添加表数据
  7.  select:查询表数据
  8.  update:更新表数据
  9.  all:允许任何操作
  10.  usage:只允许登录

10.3 回收权限

命令详解

revoke privileges on dbname[.tbname] from username@ip;

revoke all privileges on *.* from hk361;

use MySQL

select * from user

进入 MySQL库中

修改密码;

update user set password = password('qwe') where user = 'hk361';

刷新权限;

flush privileges

10.4 导出导入

1. 导出

(1) 导出整个数据库

在Windows的DOS命令窗口中执行:mysqldump heze>d:/hk.sql -u root -p

(2)导出指定库下的指定表

在Windows的DOS命令窗口中执行:mysqldump heze emp>d:/hk.sql -u root -p

2. 导入

登录MySQL数据库管理系统之后执行:source d:/yunke.sql

10.5 第一范式

数据库表中不能出现重复记录,每个字段是原子性的不能再分

不符合第一范式的示例,如下表10-1所示:

表10-1

学生编号

学生姓名

联系方式

1001

张三

[email protected],1359999999

1002

李四

[email protected],1369999999

1001

王五

[email protected],13488888888

存在问题:

最后一条记录和第一条重复(不唯一,没有主键)

联系方式字段可以再分,不是原子性的,如下表10-2所示:

表10-2

学生编号(pk)

学生姓名

email

联系电话

1001

张三

[email protected]

1359999999

1002

李四

[email protected]

1369999999

1003

王五

[email protected]

13488888888

关于第一范式,每一行必须唯一,也就是每个表必须有主键,这是我们数据库设计的最基本要求,主要通常采用数值型或定长字符串表示,关于列不可再分,应该根据具体的情况来决定。如联系方式,为了开发上的便利行可能就采用一个字段了。

10.6 第二范式

第二范式是建立在第一范式基础上的,另外要求所有非主键字段完全依赖主键,不能产生部分依赖,如下表10-3所示:

示例:

表10-3

学生编号

学生姓名

教师编号

教师姓名

1001

张三

001

王老师

1002

李四

002

赵老师

1003

王五

001

王老师

1001

张三

002

赵老师

确定主键,如下表10-4所示:

表10-4

学生编号(PK)

教师编号(PK)

学生姓名

教师姓名

1001

001

张三

王老师

1002

002

李四

赵老师

1003

001

王五

王老师

1001

002

张三

赵老师

以上虽然确定了主键,但此表会出现大量的冗余,主要涉及到的冗余字段为“学生姓名”和“教师姓名”,出现冗余的原因在于,学生姓名部分依赖了主键的一个字段学生编号,而没有依赖教师编号,而教师姓名部门依赖了主键的一个字段教师编号,这就是第二范式部分依赖。

解决方案如下:

学生信息表,如下表10-5所示:

表10-5

学生编号(PK)

学生姓名

1001

张三

1002

李四

1003

王五

教师信息表,如下表10-6所示:

表10-6

教师编号(PK)

教师姓名

001

王老师

002

赵老师

教师和学生的关系表,如下表10-7所示:

表10-7

学生编号(PK) fk

标签:10,范式,DBA,数据库,学生,编号,主键
From: https://www.cnblogs.com/zxbin/p/17592159.html

相关文章

  • 编写设备驱动之i2c_client -10
    编写设备驱动之i2c_client参考资料:Linux内核文档:Documentation\i2c\instantiating-devices.rstDocumentation\i2c\writing-clients.rstLinux内核驱动程序示例:drivers/eeprom/at24.c本节代码:GIT仓库中IMX6ULL\source\04_I2C\03_ap3216c_okSTM32MP15......
  • games101 HomeWork6
    Games101HomeWork6导航导航作业要求IntersectP(constRay&ray,constVector3f&invDir,conststd::array<int,3>&dirIsNeg)intheBounds3.hpp:这个函数的作用是判断包围盒BoundingBox与光线是否相交,你需要按照课程介绍的算法实现求交过程。getIntersection(BVHBuil......
  • 110. 平衡二叉树
    给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例1:输入:root=[3,9,20,null,null,15,7]输出:true#Definitionforabinarytreenode.#classTreeNode:#def__init__(se......
  • AI语音克隆101
    人工智能语音克隆(也称为语音合成或语音复制)允许计算机模仿人类语音模式并产生令人惊讶的合成声音。本文讨论了AI语音克隆的想法、用途、优点、缺点以及从娱乐到可访问性的潜在未来进展。了解AI语音克隆AI语音克隆,特别是语音合成,是机器学习和自然语言处理(NLP)的一个有趣领域。......
  • Gym103687K Dynamic Reachability
    一个很奇妙的题。回想起之前打的一场模拟赛,有一道题的部分问题是要维护动态图两两联通性的。可能不太一样,但是他有一个离线的思想,将没有修改过的边提前拎出来,把已知的联通性先求了,再用线段树分治一类的可撤销做法维护剩下边的修改。但是这样维护的复杂度跟修改次数相关非常大,如果......
  • 10_Spring_CGLIB动态代理
    10_Spring_CGLIB动态代理proxy动态代理面向接口1必须有接口和实现类2增强接口中定义的方法3只能读取接口中方法的上注解cglib动态代理模式面向父类packagecom.msb.testCglib;importorg.junit.Test;importorg.springframework.cglib.proxy.Enhancer;importorg.s......
  • c语言之判断100-200内的素数
    intmain()//判断100-200内的素数{ //判断素数,即只能被1和他自身整除 //1.试除法 //假设13为素数,就拿2-12的数来试着整除,若可以那就不是素数,若不可以就是素数 //由此可知:如果2到i-1的数可以被i给整除,那么i就不是素数 inti=0; intcount=0; for(i=100;i<=200;i+......
  • Soft Rasterizer (SoftRas) windows10 vscode 运行 环境配置记录
    配了好几天,一边搜索一边配,记录下做了些什么。我的环境:windows10,vscode,RTX3090配置cl环境变量安装openssl,配置环境变量安装libtorch,配置环境变量打开对应的虚拟环境里面的打开torch\include\ATen\Parallel.h,将inlineTORCHAPIvoidlazyinitnumthreads()的实现......
  • Sqli-labs靶场之SQL手注通关详解(Less 1~10)
    Less-1 GET-Errorbased-Singlequotes-String判断注入点,这里的页面中没有可以注入的地方,因此可以判断注入点在url栏。判断注入类型id=1and1=1页面正常id=1and1=2页面正常id=1'and1=1--+页面正常id=1'and1=2--+ 页面正常由此可以判断该注入......
  • 撞了100次南墙才明白的道理
    撞了100次南墙才明白的道理:1、太正经的人,发不了大财。2、你越没本事,别人越欺负你。3、社会资源是有限的,好的资源需要靠抢。4、除了父母,没有人愿意无偿包容你。5、没有实力,你认识谁都没有用。6、人们只会看重你的成果,而不是你的努力。7、在竞争激烈的世界里,弱者只会被淘汰。......