数据库设计模式&经典例子&实例步骤

前言:

设计模式:

设计的经典案例:

实例:

-----------------

前言:

BD了一下,好像没有说明数据库设计和数据库设计范例的。也没有出现数据库“设计模式”之类的书籍。

虽然数据库设计的基础是三范式。可是具体需求不一样,设计出来的就不一样。

设计模式:

https://wenku.baidu.com/view/48116d7ba98271fe910ef92a.html

设计的经典案例:

实例1:电子商务网站类

https://blog.csdn.net/moll_77/article/details/78697672

https://www.jianshu.com/p/74c310b1d89f

实例2: 树形结构设计:

类别表_1(Type_table_1)
名称     类型    约束条件   说明
type_id     int       无重复    类别标识,主键
type_name char(50)    不允许为空   类型名称,不允许重复
type_father   int         不允许为空   该类别的父类别标识,如果是顶节点的话设定为某个唯一值

实例3:多用户及其权限管理的设计

功能表(Function_table)
名称     类型    约束条件   说明
f_id          int       无重复    功能标识,主键
f_name        char(20)    不允许为空   功能名称,不允许重复
f_desc        char(50)    允许为空     功能描述

用户组表(User_group)
名称     类型    约束条件   说明
group_id      int         无重复        用户组标识,主键
group_name    char(20)    不允许为空    用户组名称
group_power   char(100)   不允许为空    用户组权限表,内容为功能表f_id的集合

用户表(User_table)
名称     类型    约束条件   说明
user_id       int         无重复        用户标识,主键
user_name     char(20)    无重复        用户名
user_pwd      char(20)    不允许为空    用户密码
user_type     int         不允许为空    所属用户组标识,和User_group.group_id关联

分类4:

四、简洁的批量m:n设计
碰到m:n的关系,一般都是建立3个表,m一个,n一个,m:n一个。但是,m:n有时会遇到批量处理的情况,例如到图书馆借书,一般都是允许用户同时借阅n本书,如果要求按批查询借阅记录,即列出某个用户某次借阅的所有书籍,该如何设计呢?让我们建好必须的3个表先:

书籍表(Book_table)
名称     类型    约束条件   说明
book_id       int         无重复        书籍标识,主键
book_no       char(20)    无重复        书籍编号
book_name     char(100)   不允许为空    书籍名称
……

借阅用户表(Renter_table)
名称     类型    约束条件   说明
renter_id     int         无重复        用户标识,主键
renter_name   char(20)    不允许为空    用户姓名
……

借阅记录表(Rent_log)
名称     类型    约束条件   说明
rent_id       int         无重复        借阅记录标识,主键
r_id          int         不允许为空    用户标识,和Renter_table.renter_id关联
b_id          int         不允许为空    书籍标识,和Book_table.book_id关联
rent_date     datetime    不允许为空    借阅时间

五、冗余数据的取舍
上篇的“树型关系的数据表”中保留了一个冗余字段,这里的例子更进一步——添 加了一个冗余表。先看看例子:我原先所在的公司为了解决员工的工作餐,和附近的一家小餐馆联系,每天吃饭记账,费用按人数平摊,月底由公司现金结算,每个 人每个月的工作餐费从工资中扣除。当然,每天吃饭的人员和人数都不是固定的,而且,由于每顿工作餐的所点的菜色不同,每顿的花费也不相同。例如,星期一中 餐5人花费40元,晚餐2人花费20,星期二中餐6人花费36元,晚餐3人花费18元。为了方便计算每个人每个月的工作餐费,我写了一个简陋的就餐记账管理程序,数据库里有3个表:

员工表(Clerk_table)
名称     类型    约束条件   说明
clerk_id      int         无重复        员工标识,主键
clerk_name    char(10)    不允许为空    员工姓名

每餐总表(Eatdata1)
名称     类型    约束条件   说明
totle_id      int         无重复        每餐总表标识,主键
persons       char(100)   不允许为空    就餐员工的员工标识集合
eat_date      datetime    不允许为空    就餐日期
eat_type      char(1)     不允许为空    就餐类型,用来区分中、晚餐
totle_price   money       不允许为空    每餐总花费
persons_num   int         不允许为空    就餐人数

就餐计费细表(Eatdata2)
名称     类型    约束条件   说明
id            int         无重复        就餐计费细表标识,主键
t_id          int         不允许为空    每餐总表标识,和Eatdata1.totle_id关联
c_id          int         不允许为空    员工标识标识,和Clerk_table.clerk_id关联
price         money       不允许为空    每人每餐花费

实例:

比如说,根据界面提取出业务规则,然后建模

https://blog.csdn.net/oldlegy/article/details/78158728

参考文档:

https://www.cnblogs.com/Kevin-ZhangCG/p/10270996.html

https://www.cnblogs.com/hxwzwiy/archive/2012/03/27/2419060.html

https://blog.csdn.net/hhuahualala/article/details/51589133

https://blog.csdn.net/SseJava/article/details/5099226?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://www.cnblogs.com/DBFocus/archive/2011/10/12/2208580.html#4380728https://www.cnblogs.com/DBFocus/archive/2011/10/12/2208580.html#4380728

发布了668 篇原创文章 · 获赞 12 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/xiamaocheng/article/details/105233840