数据库设计心得

数据库设计心得

本文作者:
Weijie99同学 https://www.cnblogs.com/baoweijie99/
吴优同学 https://www.cnblogs.com/Airywuyou/

  • 对于数据库设计,首先不谈学问方面的知识,我们应该注意一点就是数据库的命名,即各个属性的英文命名,注释的时候是以中文说明,但是命名的时候千万别用中文,然后命名我习惯采用英文_英文的方式,例如组名我使用group_name,我认为这样清晰明了,可以让人从中直接读出意思,切忌使用中式英语或者拼音,这个虽然方便自己,但是别人是很难看懂的或者反应过来的。

  • 对于数据字段类型的选择,一般字符型我基本选择用varchar,因为在不定长的字符串时,varchar占用空间是可变的,而char不变,所以varchar更节省时间,而对于电话号码序列号之类的定长元素,我使用char,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找。然后对于一些用数字来标识类型的,我多采用tinyint而不是int来节省空间。一些时间属性,date只明确到日,而timestamp精确到秒。按需选择,其中timestamp还要注意时区问题。

  • 对于数据库表设计符合三个范式要求。表中属性要具体不可拆分,比如网控器信息,要具体拆分成电压,到期日期等等。对于一对多的形式要尽量拆成两个表,防止数据冗余。比如我一个用户可能有多台网控器有多个订单,所以用户表,网控器表和订单表我们要分开,并添加适当的外键。保证每个属性和主键有直接关系,比如用户表主键用户id与订单内容,网控器电压没有直接关系,必须分开表放。

  • 适当设置一些默认值,可以大大减少程序的逻辑,比如在用户注册时间设置默认值CURRENT_TIMESTAMP,这样可以保证插入用户时自动生成当前时间而减少程序逻辑的编写,disable的默认值设为0,保证刚开始的账号不是就被禁用的。client默认值也设为0,保证刚开始用户无代理用户。这些细节操作都能减轻程序编写的负担。

  • 在这次的数据库设计中,我从零开始,学习了powerdesigner的使用并参与数据库设计,包含了生成PDM、添加外键、生成数据字典等。
    在画PDM时,我根据小组讨论的结果,生成了我们组所需要的表,并将对应属性填入表中。本以为这部分是很容易的。但是在经过组员们的检查后,发现很多属性存在code拼写错误的情况,例如将“phone”写成“phnoe”;还发现有些属性前期没有考虑充分,例如设备的所在地址没有添加;还有一些属性的数据类型出了问题,比如定义为了char(4),过于短了,亦或是有些不定长属性定义为char( )。

  • 在生成外键时,也出现了很多的问题,比如被引用的属性不唯一;外键相关的属性数据类型不同。以上情况不仅需要改外键相关的属性,而是需要在整个PDM中修改这个属性。再经过很久的检查过后,我们才完成了所有外键的添加。

  • 而在生成数据字典时,相对轻松。首先,需要选择默认模版或是其他模版,然后勾选需要导出的内容,我们只选择了导出TABLES,并且将需要导出的内容进行勾选;最后预览,满意后导出为rtf文件。

  • 以上就是我在使用power designer设计数据库时,所学习到的知识和存在的问题。在设计中最主要的问题还是在于没有明确数据库设计的规范,例如变量命名、外键的引用完整性等等。

posted @ 2020-11-20 18:51  Strolling707  阅读(157)  评论(0)    收藏  举报