数据库业务关系设计简要
一、主外键关系
1,复制法
如:一个商城项目:商品表和订单表之间的关系。应该是,产生订单后,把商品表复制一份出来,需要的字段有,商品名称、价格、购买时间等。为什么要这样设计,因为,当这件商品被其它人买走之后,可能会修改价格,所以必须是复制一份出来。不可以用表连接查询。
2,假删除法
如:OA系统,公司部门,与员工之间的关系。员工必须属于某个部门,当部门修改名称时,要保证员工能看到修改过的名称,当删除的时候,由于存在,外键约束,所以不能删除。只可以做一个字段,设置为不显示。可是这样会带来的问题是,数据库越来越大,数据的冗余。
3,真正最好的做法
真删除,在数据库多加一条记录为,临时类别。当删除时,直接把所有的关连的复制到,临时表的ID,不会影响到其它的业务。
在对数据要求比较高的项目中,如,航天,证券等,最好的做法,都是假删除,即所有的
删除,都是设为不显示。
二、移值性
1,少用不用存储过程
存储过程,由于是编译好的sql性能比一般的sql查询稍快,但由于不同的数据库对存储过程的编写不同,在 sql server 中是 t-sql 在 orcale 中是 pl-sql 两者对变量的初始化,判断,循环都不一样,所以移值性很差。都必须重写。
2,外键关连
这一点在导入,导出数据时,表现的较为明显。即在导入数据库找不到外键的问题,导致数据导入失败。只可以备份整个DB。在关系型数据库中,最好不要使用数据库的关连约束,最好都用程序来完成。
3,程序sql上的通用
如:insert into user (uname,upwd,logtime) values('user','123456',12345445);
有的数据库直接使用 insert into user value('user','123456',12345445); 如:sql server 但这个sql在mysql 下就会报错。
4,当修改数据库字段时影响减少到最小
当添加了字段时,要保证原来的sql可以正常执行。例如上即可,这里不在过多叙述。
- 上一篇:网络爬虫-User-Agent
- 下一篇:Java网站开发外包软件公司