跳至主要内容

数据库(MySQL)编程之关系型数据库基础知识

http://ift.tt/2xhKOrl

关系型数据库基础知识

  1. E-R模型
    1. 又可称为 实体-联系图
      1. 提供了表示实体型,属性和关联的方法
      2. 用来描述现实世界的概念模型
    2. 关联关系
      1. 一对一关联
      2. 一对多关联
      3. 多对多关联
  2. 范式理论
    1. 核心:规范化
      1. 把数据库组织成,在保持存储完整性的同时还能保证最小化冗余数据的结构的过程
    2. 常用的范式
      1. 范式一(1NF:是指数据库表中的每一列都是不可分割的基本数据项,每一列中不能有有多个值,不能共有重复的属性
        1. 例如:
学号 姓名

联系方式

10001

张三

18888888888,zhangsan@gmail.com

10002

李四

19999999999,lisi@gmail.com

  1. 这样就是同一个列中有2个属性(联系方式中有2个属性,电话和邮箱)
  2. 拆分后:

学号

姓名

电话

email

10001

张三

18888888888

zhangsan@gmail.com

10002

李四

19999999999

lisi@gmail.com

  1. 范式二(2NF):在满足第一范式的基础上,要求改数据表中的任何一个非主键字段的数值都依赖于改数据表的主键字段
    1. 例如

姓名

课程

教师

教师职称

教材

时间

地点

张三

c语言

诸葛亮

教授

《七天学会c语言》

8:00

905

李四

汇编语言

令狐冲

讲师

《汇编语言》

10:00

605

  1. 上面的例子可以看出,教师职称所依赖的主键是教师,教材所依赖的主键是课程,跟其他的信息没有关系
  2. 可以分离为

姓名

课程

教师

时间

地点

张三

c语言

诸葛亮

8:00

905

李四

汇编语言

令狐冲

10:00

695

 
 

    课程

    教材

    c语言

    《七天学会c语言》

    汇编语言

    《汇编语言》

     
     

      教师

      教师职称

      诸葛亮

      教授

      令狐冲

      讲师

       
       

      1. 第三范式(3NF):在满足第二范式的前提下,要求该表中的任何两个非主键字段的数据之间不存在函数依赖关系
        1. 例如
      教师

      教师职称

      工资

      奖金

      诸葛亮

      教授

      6000

      600

      令狐冲

      讲师

      4000

      400

       
       

      上面这个表就违反了第三范式,因为工资和奖金存在了函数依赖关系

      1. 拆分如下:
      教师

      教师职称

      工资

      诸葛亮

      教授

      01

      令狐冲

      讲师

      02

       
       

        工资

        基本工资

        奖金

        01

        6000

        01

        02

        4000

        02

         
         

          奖金

          奖金

          01

          600

          02

          400

           
           

          The post 数据库(MySQL)编程之关系型数据库基础知识 appeared first on cole.

          http://ift.tt/eA8V8J sql September 08, 2017 at 09:27PM

          评论

          此博客中的热门博文

          反Hook 之自己实现GetProcAddress和LoadLibraryA(c++ version)

          http://ift.tt/2AocAD0 // 课上练习.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> //要实现的功能: /* 自己实现GerProcAddress LoadLibraryA */ //思路: /* GerProcAddress和LoadLibraryA都是在Kernel32.dll中的 首要的任务就是找到Kernel32.dll,然后遍历IAT就能找到这两个函数 现在首要的难点就是如何找到kernel32.dll() 通过dll的加载顺序可以找到,而且虽然需要使用未文档化的API,但是好在windgb可以直接看,而且用到的也并不是很多 懒得去晚上搜了,直接自己实现一个得了,作为演示,能用就行(最好还是搜一个正规的结构体) */ /* 0: kd> dt _TEB /a nt!_TEB +0x000 NtTib : _NT_TIB +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIENT_ID +0x028 ActiveRpcHandle : Ptr32 Void +0x02c ThreadLocalStoragePointer : Ptr32 Void +0x030 ProcessEnvironmentBlock : Ptr32 _PEB //首先实现部分TEB结构体,因为只需要用的PEB的部分,所以实现到这就ok了 */ //构建 TEB typedef struct _TEB { //保证0x30是peb的结构体就ok了 struct _tem { DWORD a1; DWORD a2; DWORD a3; DWORD a4; DWORD a5; DWORD a6; DWORD a7; DWORD a8; DWORD a9; DWORD a10; ...

          IDA动态调试ELF中遇到的问题(1)

          https://ift.tt/2Gxnf2F 遇到 got SIGCHLD singal(child status has changed)...这种提示 singal fork了子进程 直接点yes,然后继续单步执行,出来提示 pass to application就行了 内存查看 用od习惯了之后,凡事都想右键看一下内存,但是IDA中好像没有那么如意, 目前只是在栈中右键发现有查看hex的选项 动态调试的时候的nop ida保存动态调试的时候修改的数据 方法一:在程序运行的时候保存 The post IDA动态调试ELF中遇到的问题(1) appeared first on cole . https://ift.tt/2q9Qf5g WHATEVER April 05, 2018 at 09:44AM

          32位ARM汇编语言(四)数据处理指令

          http://ift.tt/2Gwa4v5 基本指令介绍 数据传送指令 比较指令 cmp{条件}操作数1,操作数2 CMN{条件}操作数1,操作数2 TST{条件},操作数1,操作数2 TEQ{条件} 操作数1,操作数2 算数逻辑运算指令 ADD{条件}{S}目的寄存器,操作数1,操作数2 ADC{条件}{S}目的寄存器,操作数1,操作数2 RSB{条件}{S}目的寄存器,操作数1,操作数2 RSC{条件}{S}目的寄存器,操作数1,操作数2 AND{条件}{S}目的寄存器,操作数1,操作数2 EOR{条件}{S}目的寄存器,操作数1,操作数2 BIC{条件}{S}目的寄存器,操作数1,操作数2 基本指令介绍 数据传送指令 数据传送指令用于在寄存器和储存器中之间进行数据的双向传输 比如:MOV ,MVN 算数逻辑运算指令 完成常用的算术与逻辑运算,该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR中相应条件表示位 比如:ADD,ADC,SUB,SBC,RSB,RSC,AND,ORR,EOR,BIC 比较指令 不保存运算结果,只更新CPSR中相应的条件标志位 比如:CMP,CMN,TST,TEQ 数据传送指令 指令 描述 MOV{条件}{S}目的寄存器,操作数 数据传送指令 MVN{条件}{S}目的寄存器,操作数 数据取反传送指令 {S}选项决定指令的操作是否影响CPSR中条件标志位的值 MVN与MOV不同之处是在传送之前按位被取反 __asm__ ("mov ri,r0“); //将寄存器R0的值传送到寄存器R1 __asm__(”mov r1,r0,lsl#3"); //将寄存器R0的值左移3位后传到R1 __asm__(“mov pc,lr"); //将寄存器lr的值传送到pc,常用于子程序返回 __asm__("mvn r0,#0”); // 将立即数0 取反传送到寄存器R0中,完成后R0=-1 比较指令 指令 描述 CMP{条件}操作数1,操作数2 比较指令 CMN{条件}操作数1,操作数2 比较反值指令 TST{条件...