数据库设计时的建议

1.数据库设计时,如果是下拉的框,表示状态的框,不要将这些状态值硬编码在代码里面,因为这些很可能会随着后期需求的改变而改变,建议使用数字表示,这样的优势在于

a.如果状态的字符串变了,但是值可以不变,这样如果有其他模块依赖这个值,也不会对他们产生影响

b.如果后期用数据库表类维护这些值,那数字的优势就体现出来了,可以直接兼容.(还有很重要的一点,在设计之处就把它设计成tinyint,那么就不存在这些问题)

2.mysql 中的char 和 varchar 

国内写的一本书书上说char会自动把多余的空格删除掉,而varchar不会.

Server version: 5.5.49-0ubuntu0.14.04.1 (Ubuntu)

今天做了一个测试结果令我很无语啊,插入了一个很长的字符串(超过了255),然后执行插入操作,然后他成功了,但是他把超过的字符给剪掉了.这个很可能是和版本和操作系统有关吧,之前在windows上的时候数据库会报这个字符太长了的错误,

因此我觉得在后台代码做长度校验还是很有必要的.

查询表被那些表关联(当要删除一张表时,却提示这张表被其他表关联了,此时你是否很想知道是被哪些表关联了,来源:http://zhidao.baidu.com/question/198072067)

select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME = ‘<table>‘;

如果需要查看某一列上的外键关系,需要添加列的条件 REFERENCED_COLUMN_NAME.xx=xx

show create table 表名;这个命令可以查看表的所有信息,包括一些字段类型,字段的约束,外键,主键,索引,字符编码等等。

 

mysql> insert into BOOK (NAME)value(‘1121212121212121212122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333322222222222222222223wreeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssffffffffffffsfdfsddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd22222222222222222222222222222222222222222222‘);
Query OK, 1 row affected, 1 warning (0.07 sec)

mysql> select * from BOOK;
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------+----------+---------------------+--------+
| ID | NAME                                                                                                                                                                                                                                                            | AUTHOR | PRICE | INFO     | PUBLISHDATE         | amount |
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------+----------+---------------------+--------+
|  1 | java                                                                                                                                                                                                                                                            | sun123 | 100.9 | javaEE   | 2015-11-20 00:00:00 |      0 |
|  2 | 123                                                                                                                                                                                                                                                             | qq     |   123 | testtest | 2015-12-12 12:12:12 |      0 |
|  3 | ooop                                                                                                                                                                                                                                                            | kkk    |  1212 | 1212asdf | 2015-12-12 12:02:12 |    233 |
|  4 | qwe                                                                                                                                                                                                                                                             | 123    |   123 | qwewertr | NULL                |    123 |
|  5 | 112121212121212121212222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 | NULL   |  NULL | NULL     | NULL                |      0 |
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+-------+----------+---------------------+--------+
5 rows in set (0.00 sec)
时间: 2024-10-06 19:03:52

数据库设计时的建议的相关文章

数据库设计时不得不违背三范式的情景

1.在进销存系统中,订单信息中关联到好多其他的基本信息,比如:客户,付款方式,货运方式等,这些信息是有专门表进行维护的,在下订单时也是用下拉框选择的,但在保存订单信息时,不能只记录所谓的外键ID,而是应该同时记录名称等其他的信息. 这是因为订单不能因为没有了客户ID或是付款方式ID而不知道客户与付款方式了.对于订单这种客观存在的事物,是具有一定的历史性质的,因此在设计时应该与其他的关联信息可以“断开”,这也就是保证了订单的独立性. 摘自:http://www.cnblogs.com/tongtk

关于数据库设计和使用建议

在使用和设计数据库时个人的一些建议: 1.在设计和使用表等时,请永远想到一个问题:数据库时用来存储数据和查询数据用的,我们需的是写和查询 2.前期在设计数据表结构时,请不要随意使用数据类型,请认真思考你的需求类型,随意设计带来的后果就是查询速度超级慢,最后被迫重新设计 3.数据类型:能用一个字节表达的请勿用2个以上的代替(数据库用来存储数据的,占用空间的优化比起你看懂它每个值表达的意义更重要) 4.CURD的操作:不要或者尽量不要在查询等情况下使用数据库自带的函数,还是那句话:数据库的目的不是用

浅谈数据库设计

浅谈数据库设计 数据库设计的重要性:好的数据库设计有下面的一些作用: 1.首先充分体现系统的需求,数据库是为应用服务的,好的数据库设计应该首先能满足应用系统的业务需求,准确的表达数据间关系. 2.保证数据的准确性和一致性,通过主外键.非空.限制.唯一索引等保证数据的健壮. 3.提高数据的查询效率,通过合理表结构,安排物理存储分区.增加索引等方式,提高数据的读取速度,提高查询效率. 4.有好的扩展性,在必要时能根据需求扩展数据结构. 在系统设计中对数据库的设计应考虑哪些设计原则  数据库是整个软件

数据库设计五要点 让数据库设计更加规范

通常情况下,可以从两个方面来判断数据库是否设计的比较规范.一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少.若符合这两个条件,则可以说明这个数据库的规范化水平还是比较高的.当然这是两个泛泛而谈的指标.为了达到数据库设计规范化的要求,一般来说,需要符合以下五个要求. 要求一:表中应该避免可为空的列. 虽然表中允许空列,但是,空字段是一种比较特殊的数据类型.数据库在处理的时候,需要进行特殊的处理.如此的话,就会增加数据库处理记录的复杂性.当表中有比较多的空字段时,在同等条件下,数据库处理的性能

联邦式知识图谱上的自然语言检索引擎数据库设计心得-T5队

根据我们小组讨论设计数据库的整个过程,可以将数据库的设计分为两个部分:准备部分.设计部分和总结部分.下面根据所分的阶段,对三个阶段所需的准备和注意事项进行阐述. 一. 准备部分: 设计工具 数据库的设计过程之中会使用到一些软件,在软件工程导论这门课上,周老师使用的是powerdesigner进行UML图的设计.数据库设计实验上讲授用powerdesigner来设计数据库.在学习使用该软件的时候,建议观看演示的视频进行学习,没有什么比实际的例子更加容易进行学习的了. 用例图 用例图在明确各类Act

从零开始编写自己的C#框架(9)——数据库设计与创建

对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计数据库,不然可能会产生不可控的异常. 从零开始编写自己的C#框架 数据库设计规范   文件状态: [√] 草稿 [  ] 正式发布 [  ] 正在修改 文件标识: C#框架 当前版本

02-大鸭梨博客系统数据库设计及Dapper的使用

毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配合.数据库设计是整个系统的根基,它关乎系统功能的实现.稳定性.扩展性等多个方面,可见数据库设计的重要性. 那么好的数据库设计应该具备什么样的基本条件呢,大致有这么几点: 1.充分体现系统的需求 不管是数据库设计还是功能设计,我们最终的目的都是要实现客户的业务需求,所以数据库设计的第一准则就是要符合业

5-2数据库设计

5-2数据库设计 tags:数据库 基本步骤 步骤: 1. 需求分析阶段 进行数据库设计首先必须准确了解与分析用户需求.需求分析是整个设计过程的基础,是最困难和最耗费时间的一步. 2. 概念结构设计阶段 概念设计是整个数据库设计的关键,它通过对用户需求进行综合.归纳与抽象,行程一个独立于具体数据库管理系统的概念模型. 在概念结构设计阶段行程独立于机器特点,独立于各个关系数据库管理系统产品的概念模式,一般用ER图表示 3. 逻辑结构设计阶段 逻辑结构设计是将概念结构转为某个数据库管理系统所支持的数

银行储蓄管理系统——数据库设计

一.       项目设计目的 (1)培养学生运用所学课程<数据库系统原理>的理论知识和技能,深入理解<数据库系统原理>课程相关的理论知识,学会分析实际问题的能力. (2)培养学生掌握用<数据库系统原理>的知识设计计算机应用课题的思想和方法. (3)培养学生调查研究.查阅技术文献.资料.手册以及编写技术文献的能力. 二.       项目背景 当今计算机及网络技术飞速发展,计算机应用在全球范围内日益普及,而社会也正快速向信息化社会前进,信息系统的作用也越来越大.因此,纸