数据库设计规范

逻辑设计 ->物理设计

实际工作中:

逻辑设计+物理设计

物理设计

表名 字段名 字段类型

  1. 数据库命名规范
  1. 所有数据库对象名称必须使用小写字母并用下划线分割
  2. 所有数据库名称禁止使用mysql保留关键字
  3. 数据库命名做到见名识义,最好不要超过32个字符 mc_userdb(用户数据库) user_account(用户账号表)
  • 临时表必须以tmp为前缀并以日期为后缀
  • 备份表,备份表必须以bak为前缀并以日期为后缀

5 . 存储相同数据的列名和列类型必须一致

 

  1. 数据库基本设计规范
  1. 所有表必须使用Innodb存储引擎(5.6以后的默认引擎 支持事物,行级锁,更好的恢复性,高并发下性能好)
  2. 数据库和表的字符集统一规范UTF8(避免字符集转换成乱码 mysql中utf8字符集汉子3个字节,ASCII码占用1个字节)
  3. 所有表和字段需要字段 (使用comment 添加备注 从一开始进行数据字典的维护)
  4. 尽量控制单表数据量的大小,尽量控制500万以内 (这种限制取决于存储设置和文件系统)
  1. 数据库索引设计规范
  2. 数据库字段设计规范
  3. 数据库sql开发规范
  4. 数据库操作行为规范

 

什么是sql注入

sql注入是一种将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法

sql产生

  1. web开发人员无法保证所有的输入都已经过滤
  2. 攻击者利用发送sql服务器的输入数据构造可执行的sql代码
  3. 数据库为做想应的配置

如何寻找sql漏洞

借助逻辑推理

  1. 识别web应用中所有输入点
  2. 了解哪些类型的请求会触发异常
  3. 检测服务器响应中的异常

如何进行sql注入攻击

  1. 数字注入
  1. 使where 条件永远为真 构造 sql语句转换 where id =-1 or 1=1
  1. 字符串注入
  1. 参数 lala'# lala'-- sql语句转换 where name ='lala'#' and password = '123123'

如何预防sql注入

1. 数字类型 $id  = isset($_GET['id']) ? $_GET['id'] :'';
if(empty($id) || !is_numeric($id))
{
  die('参数有误');
}
2. 字符串类型 if(empty($user_name) || !preg_match("/^[a-zA-Z0-9]{6,}$/",$user_name))3.转义字符串
3. 转义字符 php函数

$sql ="select * from user where user_name = '" . addslashes($user_name) ."' and pass ='".md5($pass) . "'";

mysql函数
$sql ="select * from user where user_name = '" . mysqli_real_escape_string($db,$user_name) ."' and pass ='".md5($pass) . "'";

4. 利用mysql的预编译机制 $sql = "select id,user_name from user where user_name = ? and pass = ?";

sql server 加备注用什么代码 sql语句备注怎么添加_数据库

sql server 加备注用什么代码 sql语句备注怎么添加_mysql_02