数据库设计思考

一:没有完美的数据库设计,只有符合业务的数据库设计!

二:我们的数据库设计,在遵守标准(三大范式)的同时也要考虑客户的体验!

  有用户才有天下!

三:数据库设计时必须要做的

           1.需求的分析;

           2.考虑需求可能的变更(预留设计);

四:数据库设计中具体要注意的几点;

 1.凡是用户输入的不能作为主键

 主键是唯一的,一般不能让客户做任何操作;

 2.凡是有业务意义的不能作为主键

     既然是具有业务意义,客户随时都有可能提出这个业务,要求修改业务,也会有变动的可能!

3.除非确定是有必要的字段,其他都允许为空;

   设计数据库时,约束简单点最好,约束多则在系统中开发时要注意的就多,开发效率相对会底,因为系统是可以通过验证辅助完成这些约束的!

4.不能缺少时间或日期字段、并预留备注字段

5. 业务的时效(时间有效)性;

6.数据的采集宁滥毋缺  

7.预先计划

  比如考虑到用户可能会误操作,然后又要求维护人员恢复数据,需要对表进行软删除(逻辑删除,也就是增加一个IS_DELETED字段,0表示正常,删除操作就是将该字段设置为1) 

 

五:字段是否允许为空的思考

  为空的选项,就是为了表示未知的情况。

  如果为空,查询条件就必须处理为空的情况,否则会出现一些很奇怪的问题。也就是说,几乎所有的判断都必须加上 is not null 或者时  is null 的判断。 其实在部分情况下可以使用默认值。

六:Drop Table

   要增加数据列的话,不好采用Drop Table重新Create Table,因为会把数据也删除掉,最好用Alter语句

alter table OrderMaster add IsMonthly int(11) not NULL DEFAULT 0;

alter table OrderSearchSummary add IsMonthly int(11) not NULL DEFAULT 0;

 

转载于:https://www.cnblogs.com/peterYong/p/6556560.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

performSegueWithIdentifier:sender里边的sender是啥意思

performSegueWithIdentifier:sender里边的sender是啥意思啊?怎样用啊? [self performSegueWithIdentifier:"pushSign" sender:self]; [self performSegueWithIdentifier:"pushSign" sender:sender]; [self performSegueWithIdent…

java wrapper怎么运行_如何从智能合约中生成Java Wrapper

在本文中,我们将了解如何直接从智能合约生成Java Wrapper类以与Java中的智能合约进行交互。从智能合约生成Java Wrapper类有不同的方法:1. Web3j命令行工具和solc2. Web3j命令行工具和Truffle构建生成的工件3. web3j-maven-plugin4. web3j-gradle-plugin…

Hive 1.2.1SparkSqoop安装指南

目录 目录 1 1. 前言 1 2. 约定 2 3. 服务端口 2 4. 安装MySQL 2 4.1. 安装MySQL 2 4.2. 创建Hive元数据库 4 5. 安装步骤 5 5.1. 下载Hive 1.2.1二进制安装包 5 5.2. 安装Hive 5 5.3. 安装MySQL-Connector 5 5.4. 修改配置 5 5.4.1. 修改/etc/profile或~/.profile 5 5.4.2. 修…

Matlab与C/C++混合编程调用OpenCV

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com http://item.taobao.com/item.htm?spma1z10.5-c.w4002-9510581626.24.ZO6sko&id43401674106 精通MATLAB混合编程视频讲解 MATLAB各类函数…

STL--排序与检索

题目 现有N个大理石,每个大理石上写了一个非负整数。首先把各数从小到大排序,然后回答Q个问题。每个问题是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石写着x。排序后的大理石从左到右编写为1-N。(样例中,…

体验LESS CSS 框架

LESS基于NODE.JS的一种框架性语言,它可以更好更快捷的来搭建网站框架结构; 而后LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6, Webkit, Firefox)&a…

java添加按钮点击事件_如何为odoo 10中的按钮点击事件添加一个java脚本处理程序?...

我想使用java脚本为header中的按钮创建一个处理程序。下面我视图模型给出:如何为odoo 10中的按钮点击事件添加一个java脚本处理程序?inherit_id"web.assets_backend">rel"stylesheet">my_pet_store_formpetstore.messageformc…

LeetCode(53):Maximum Subarray

Maximum Subarray: Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] has the largest sum 6. 题意:找…

孩子教育

看了一圈学区房,基本上把浦东各个一流二流学校全看一遍了,大体下来觉得未必非要到一流学校附近买学区房,主要是家庭经济条件不允许,再者我和老公希望孩子在小学培养读书的习惯,而不是天天做试卷。所以一流学校和二流学…

python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件

听说Visual Studio Code(VS Code)的诸多好处,了解了一下果真很喜欢,我喜欢它的缘由主要有3个,一是VS Code开源且跨平台,二是由于其界面很是酷,三是能够知足个人大所属代码需求,除此以外固然还有强大的好奇心…

使用命名空间、头文件和实现文件

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com *************************************************** 2.3 使用命名空间、头文件和实现文件 使新的throttle类满足程序的需求将是非常…

Permissions for id_rsa are too open

为什么80%的码农都做不了架构师?>>> Last week I was lucky enough to have my laptop upgraded (yay SSD) which meant I needed to configure a new install of OSX Lion. Most of my files are stored online (email, documents, code, etc) but I m…

java看图_看图吧,Java

package salary;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.text.NumberFormat;public class Salary extends JFrame{//声明标签private JLabel numl;private JLabel basel;private JLabel salel;//声明文本框private JTextField numf;priva…

解决端口占用

tomcat启动时报错: 这说明8080端口已被其他程序占用,先用命令提示符 "netstat -ano" 显示端口,再在结果中找到端口,然后根据其PID再输入"tasklist"命令,在结果中查找其对应程序,就可知…

Python笔记-第一天

1。Python的输出print函数要把输出的字符串用单引号或者双引号括起来,但是不能混用。比如print(hello,world)和print("hello,world")是相同的。2.大小写敏感。3.由于缩进使用空格,复制代码不再那么方便。4.我在notepad中设置了Tab自动转化为4个…

Saltstack 报错 python-crypto randomPool_DeprecationWarning:

执行saltstack 报错一下信息根据报错信息修改python文件#若遇报错1#Starting salt-master daemon: /usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp > 5 to avoid timing at…

java接口源码_java collection接口源码

package java.util;/** 1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素,* 有些集合有序,JDK不提供本接口的实现,只提供子接口的实现(例如Set,List)* 2.所有实现Collection(或者其子接口)的类都必须包含两个…

结构体的嵌套问题

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com *************************************************** 结构体的自引用(self reference),就是在结构体内部,包含指向自…

cocos2dx 3.x Value、Vector和Map意识

1. Value cocos2d::Value 这包括一个非常大的数字原生类型&#xff08;int,float,double,bool,unsigned char,char* 和 std::string&#xff09;外 加std::vector<Value>, std::unordered_map<std::string,Value> 和 std::unordered_map<int,Value> 的类。 你…

【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

学习了MPI四种通信模式 及其函数用法&#xff1a; &#xff08;1&#xff09;标准通信模式&#xff1a;MPI_SEND &#xff08;2&#xff09;缓存通信模式&#xff1a;MPI_BSEND &#xff08;3&#xff09;同步通信模式&#xff1a;MPI_SSEND &#xff08;4&#xff09;就绪通信…