zoukankan      html  css  js  c++  java
  • MySQL 数据库的设计规范

    网址 :http://blog.csdn.net/yjjm1990/article/details/7525811

    1.文档的建立日期、所属的单位。
    2.数据库的命名规范、视图、
    3.命名的规范:
    1)避免只使用面向计算机的术语,尽量使用与业务相关的术语。
    2)如果一个词可以在字典找到缩写的形式,尽量使用缩写形式。 eg:Dec(December)
    3)可以删除单词的元音(词首字母除外)和每个单词的重复字母来缩写一个单词。eg:Current = Crnt,Address = Adr
    4)不使用歧义的缩写。
    5)尽量使用单数的表名。
    6)避免使用无谓的表格后缀。
    7)多对多关系的表使用多个相关表的单词合写。
    eg:学生和课程的关系,多对多,学生和课程各自一张表,学生和课程的关系表表名为:StudentCourse,其中
    StudentID、CourseID复合主键,以及Student和Course表的外键。
    8)对一些具有共同特性的字段使用约定俗成的前/后缀。
    eg:
    1)发帖时间 PostTime => PostDate
    2)登录次数的统计 LoginTime => LoginCount
    3)含有链接的字段以Url结尾:ImagePath => ImageUrl
    4)布尔类型以Is、Can、Has开头
    5)外键的命名:表名+ID
    4.数据库设计的建议:
    在代码中要做下列的事情时:
    1)确保表中的行是唯一的,为表加一个主键。
    2)确保表中的单独的列是唯一的,为表添加一个约束。
    3)确保表中列的取值只能属于某个范围,添加一个Check约束。
    4)连接父-子表,就创建一个关系。
    5)父表发生变化,连带变更子表的相关行,启用级联删除和更新。
    6)大量的Join来进行查询,创建一个视图。
    7) 需要逐条的写数据库语句来完成一个业务规则,就使用存储过程。
    注意:触发器的使用需要实践体验。

    5.字段的类型不要随意设计成null,记住null和任意数的运算结果都是null。
    6.Not Null可以接受空字符串,为了确保字段不空,可以加个Check约束。
    7.确保字段的为唯一性,可以加个Unique的约束。
    8.存储过程命名时,建议名词放前面,动词后面,这样当用企业管理器查看的时候,很整齐:
    eg:
    prEmployeeDelById
    prEmployeeGetById
    prEmployeeInsert
    prEmployeeUpdate
    prProductDelById
    prProductGetById
    10.存储过程的参数命名和对应的字段名相同。

    其他的内容:
    1.基本数据库对象的命名:
    数据库对象 前缀 举例 备注
    表(Table) 无 Student
    字段(Column) 无 Title
    视图(View) v vActivity
    存储过程(Stored procedure) pr prDelOrder (系统的存储过程:_sp),pr用户自定义的存储过程
    触发器(Tigger) tr trOrder_D (后缀:_I,_U,_D ,insert,update,delet操作)
    索引(Index) ix_ ix_CustomerID
    主键(primary key) pk_ pk_Admin
    外键(Foreign key) fk_ fk_Order_OrderType ( fk_外键所在的表名_外键引用的表名)
    Check约束(Check Constraint) ck_ ck_TableColumn
    Unique约束 uq_ uq_TableColumn
    用户定义的数据类型
    (User-defined data type) udt udtPhone
    用户定义函数
    (User-defined function) fn fnDueDate

    eg:
    Create Table Article
    (
    Id Int Identity(1,1) Not Null,
    Title Varchar(50) Not Null Constraint uq_ArticleTitle Unique,
    Keywords Varchar(50) Not Null,
    Abstract Varchar(500) Not Null,
    Author Varchar(50) Not Null Default '张子阳',
    Type TinyInt Not Null Default 0 Constraint ck_ArticleType Check(Type in (0,1,2)), -- 0,原创;1,编译;2,翻译
    IsOnIndex Bit Not Null Default 1, -- 是否显示在首页
    Content Text Not Null,
    SourceCode Varchar(100) Null, -- 程序源码的下载路径
    Source Varchar(50) Not Null Default 'TraceFact', -- 文章出处
    SrcUrl Varchar(150) Null, -- 文章出处的URL
    PostDate DateTime Not Null Default GetDate(),
    ViewCount Int Not Null Default 0,
    ClassId Int Not Null -- 外键包含的字段,文章类别

    Constraint pk_Article Primary Key(Id) -- 建立主键
    )
    学习记录,方便复习
  • 相关阅读:
    RobotFramework执行报“FOR loop contains no keywords.”--踩坑记录1
    RIDE控制台中文内容显示乱码问题解决方式记录
    Sublime Text 3激活注册码 (亲测可用)
    Python项目1:实现将图片转化为手绘效果
    Cookie和Session学习笔记
    Robot Framework离线安装(附图)
    Windows使用Nginx搭建RTMP服务器
    Android:系统设置出厂默认值配置
    Android:检测内存泄漏的自动化测试Python脚本
    Shell脚本实现延迟执行指令
  • 原文地址:https://www.cnblogs.com/jingjingdidunhe/p/6530009.html
Copyright © 2011-2022 走看看