当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server:小编经验谈设计数据库表和字段

MSSQL
在SQL Server 2005数据库中更改数据架构
建立适当的索引是实现查询优化的首要前提
巧用一条SQL 实现其它进制到十进制转换
处理SQL Server 2000的命名实例和多实例
解析:怎样掌握SQL Server中的数据查询
教你轻松掌握常用的子句、关键词和函数
如何获取SQL Server数据库元数据的方法
分析SQL Server中数据库的快照工作原理
汇总数据库备份 还原 压缩与数据库转移的方法
完全讲解 使用MSCS建立SQL Server集群
SQL Server 2005 内置工具建审查系统
在SQL Server计算机上运行病毒扫描软件
教你如何升级SQL Server数据库系统
SQL Server中处理空值时涉及的三问题
教你为SQL Server数据库构造安全门
在SQL Server中编写通用数据访问方法
针对SQL Server中业务规则链接的分析
运行SQL Server的计算机间移动数据库
怎样在不同版本SQL Server中存储数据
认识那些被忽略的SQL Server注入技巧

MSSQL 中的 SQL Server:小编经验谈设计数据库表和字段


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 338 ::
收藏到网摘: n/a

以下六点纯属经验之谈,有什么不好待改进的地方需大家多多指点。

1. 检查各种变化

我在设计数据库的时候会考虑到哪些数据字段将来可能会发生变更。比方说,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,我倾向于在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。

2. 采用有意义的字段名

有一回我参加开发过一个项目,其中有从其他程序员那里继承的程序,那个程序员喜欢用屏幕上显示数据指示用语命名字段,这也不赖,但不幸的是,她还喜欢用一些奇怪的命名法,其命名采用了匈牙利命名和控制序号的组合形式,比如cbo1 txt2txt2_b 等等。除非你在使用只面向你的缩写字段名的系统,否则请尽可能地把字段描述的清楚些。当然,也别做过头了,比如Customer_Shipping_Address_Street_Line_1 I 虽然很富有说明性,但没人愿意键入这么长的名字,具体尺度就在你的把握中。

3. 采用前缀命名

如果多个表里有好多同一类型的字段(比如FirstName),你不妨用特定表的前缀(比如CusLastName)来帮助你标识字段。

4. 标准化和数据驱动

数据的标准化不仅方便了自己而且也方便了其他人。比方说,假如你的用户界面要访问外部数据源(文件、XML 文档、其他数据库等),你不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。预先安排总需要付出努力,但如果这些过程采用数据驱动而非硬编码的方式,那么策略变更和维护都会方便得多。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。

5. 采用常用实体命名机构数据

组织数据的最简单办法就是采用常用名字,比如:PERSONORGANIZATIONADDRESS PHONE 等等。当你把这些常用的一般名字组合起来或者创建特定的相应副实体时,你就得到了自己用的特殊版本。开始的时候采用一般术语的主要原因在于所有的具体用户都能对抽象事物具体化。有了这些抽象表示,你就可以在第2 级标识中采用自己的特殊名称,比如,PERSON 可能是

EmployeeSpousePatientClientCustomerVendor 或者Teacher 等。同样的,

ORGANIZATION 也可能是MyCompanyMyDepartmentCompetitorHospital

WarehouseGovernment 等。最后ADDRESS 可以具体为SiteLocationHomeWork

ClientVendorCorporate FieldOffice 等。

采用一般抽象术语来标识“事物”的类别可以让你在关联数据以满足业务要求方面获得巨大的灵活性,同时这样做还可以显著降低数据存储所需的冗余量。

6. 对地址和电话采用多个字段

描述街道地址就短短一行记录是不够的。Address_Line1Address_Line2 Address_Line3 可以提供更大的灵活性。还有,电话号码和邮件地址最好拥有自己的数据表,其间具有自身的类型和标记类别。过分标准化可要小心,这样做可能会导致性能上出现问题。虽然地址和电话表分离通常可以达到最佳状态,但是如果需要经常访问这类信息,或许在其父表中存放“首选”信息(比如Customer 等)更为妥当些。非标准化和加速访问之间的妥协是有一定意义的。