15年来,为全国50万+企业提供互联网数字化基础应用服务。
知 识
0514-86177077
9:00-17:00(工作日)
首 页
企业400电话
Hot
网站☯建设
微网小程序
商标✡知产
网络营销推广
AI电话机器人
热
彩铃©短信
增值拓展业务
新
主页
>
知识库
> 数据库设计的折衷方法
数据库设计的折衷方法
热门标签:
城市地图标志怎么标注
硅基电话机器人官网
长沙外呼系统平台
美国地图标注软件下载
合肥crm外呼系统加盟
电话机器人怎么看余额
怎么修改高德地图标注
西安电话自动外呼系统
漯河电销回拨外呼系统
作项目分析,数据库设计是一个很重要也很难的问题,
完全按照范式有可能不符合用户需求,不利于编程,
看来是具体问题具体分析,数据库设计是范式和需求的折中。
在上学时,没觉得数据类型有多重要,现在发觉了解数据类型
的具体内容也是很重要的,可以知道不同数据库之间的兼容问题
该怎么处理。
数据库设计技巧:
第2 部分— 设计表和字段
1. 检查各种变化
我在设计数据库的时候会考虑到哪些数据字段将来可能会发生变更。比方说,姓氏就是如此(注
意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,我倾向于
在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一
数据条目的变化。
— Shropshire Lad
2. 采用有意义的字段名
有一回我参加开发过一个项目,其中有从其他程序员那里继承的程序,那个程序员喜欢用屏幕上
显示数据指示用语命名字段,这也不赖,但不幸的是,她还喜欢用一些奇怪的命名法,其命名采
用了匈牙利命名和控制序号的组合形式,比如cbo1、txt2、txt2_b 等等。
除非你在使用只面向你的缩写字段名的系统,否则请尽可能地把字段描述的清楚些。当然,也别
做过头了,比如Customer_Shipping_Address_Street_Line_1 I 虽然很富有说明性,但没人愿意
键入这么长的名字,具体尺度就在你的把握中。
— Lamont Adams
3. 采用前缀命名
如果多个表里有好多同一类型的字段(比如FirstName),你不妨用特定表的前缀(比如
CusLastName)来帮助你标识字段。
— notoriousDOG
时效性数据应包括“最近更新日期/时间”字段。时间标记对查找数据问题的原因、按日期重新处
理/重载数据和清除旧数据特别有用。
— kol
5. 标准化和数据驱动
数据的标准化不仅方便了自己而且也方便了其他人。比方说,假如你的用户界面要访问外部数据
源(文件、XML 文档、其他数据库等),你不妨把相应的连接和路径信息存储在用户界面支持表
里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那
么产生工作流的数据也可以存放在数据库里。预先安排总需要付出努力,但如果这些过程采用数
据驱动而非硬编码的方式,那么策略变更和维护都会方便得多。事实上,如果过程是数据驱动
的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。
— tduvall
6. 标准化不能过头
对那些不熟悉标准化一词(normalization )的人而言,标准化可以保证表内的字段都是最基础的
要素,而这一措施有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal
Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,3NF 规
定:
· 表内的每一个值都只能被表达一次。
· 表内的每一行都应该被唯一的标识(有唯一键)。
· 表内不应该存储依赖于其他键的非键信息。
遵守3NF 标准的数据库具有以下特点:有一组表专门存放通过键连接起来的关联数据。比方说,
某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer 和Order。Order 表不包
含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer 表里包含该客户信息
的那一行。
更高层次的标准化也有,但更标准是否就一定更好呢?答案是不一定。事实上,对某些项目来
说,甚至就连3NF 都可能给数据库引入太高的复杂性。
— Lamont Adams
为了效率的缘故,对表不进行标准化有时也是必要的,这样的例子很多。曾经有个开发财务分析
软件的活就是用非标准化表把查询时间从平均40 秒降低到了两秒左右。虽然我不得不这么做,
但我绝不把数据表的非标准化当作当然的设计理念。而具体的操作不过是一种派生。所以如果表
出了问题重新产生非标准化的表是完全可能的。
— epepke
7. Microsoft Access 报表技巧
如果你正在使用Microsoft Access,你可以用对用户友好的字段名来代替编号的名称:比如用
Customer Name 代替txtCNaM。这样,当你用向导程序创建表单和报表时,其名字会让那些不
是程序员的人更容易阅读。
— jwoodruf
8. 不活跃或者不采用的指示符
增加一个字段表示所在记录是否在业务中不再活跃挺有用的。不管是客户、员工还是其他什么
人,这样做都能有助于再运行查询的时候过滤活跃或者不活跃状态。同时还消除了新用户在采用
数据时所面临的一些问题,比如,某些记录可能不再为他们所用,再删除的时候可以起到一定的
防范作用。
— theoden
9. 使用角色实体定义属于某类别的列
在需要对属于特定类别或者具有特定角色的事物做定义时,可以用角色实体来创建特定的时间关
联关系,从而可以实现自我文档化。
这里的含义不是让PERSON 实体带有Title 字段,而是说,为什么不用PERSON 实体和
PERSON_TYPE 实体来描述人员呢?然后,比方说,当John Smith, Engineer 提升为John
Smith, Director 乃至最后爬到John Smith, CIO 的高位,而所有你要做的不过是改变两个表
PERSON 和PERSON_TYPE 之间关系的键值,同时增加一个日期/时间字段来知道变化是何时
发生的。这样,你的PERSON_TYPE 表就包含了所有PERSON 的可能类型,比如Associate、
Engineer、Director、CIO 或者CEO 等。
还有个替代办法就是改变PERSON 记录来反映新头衔的变化,不过这样一来在时间上无法跟踪
个人所处位置的具体时间。
— teburlew
10. 采用常用实体命名机构数据
组织数据的最简单办法就是采用常用名字,比如:PERSON、ORGANIZATION、ADDRESS 和
PHONE 等等。当你把这些常用的一般名字组合起来或者创建特定的相应副实体时,你就得到了
自己用的特殊版本。开始的时候采用一般术语的主要原因在于所有的具体用户都能对抽象事物具
体化。
有了这些抽象表示,你就可以在第2 级标识中采用自己的特殊名称,比如,PERSON 可能是
Employee、Spouse、Patient、Client、Customer、Vendor 或者Teacher 等。同样的,
ORGANIZATION 也可能是MyCompany、MyDepartment、Competitor、Hospital、
Warehouse、Government 等。最后ADDRESS 可以具体为Site、Location、Home、Work、
Client、Vendor、Corporate 和FieldOffice 等。
采用一般抽象术语来标识“事物”的类别可以让你在关联数据以满足业务要求方面获得巨大的灵
活性,同时这样做还可以显著降低数据存储所需的冗余量。
— teburlew
11. 用户来自世界各地
在设计用到网络或者具有其他国际特性的数据库时,一定要记住大多数国家都有不同的字段格
式,比如邮政编码等,有些国家,比如新西兰就没有邮政编码一说。
— billh
12. 数据重复需要采用分立的数据表
如果你发现自己在重复输入数据,请创建新表和新的关系。
— Alan Rash
13. 每个表中都应该添加的3 个有用的字段
· dRecordCreationDate,在VB 下默认是Now(),而在SQL Server 下默认为GETDATE()
· sRecordCreator,在SQL Server 下默认为NOT NULL DEFAULT USER
· nRecordVersion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原
因
— Peter Ritchie
14. 对地址和电话采用多个字段
描述街道地址就短短一行记录是不够的。Address_Line1、Address_Line2 和Address_Line3 可
以提供更大的灵活性。还有,电话号码和邮件地址最好拥有自己的数据表,其间具有自身的类型
和标记类别。
— dwnerd
过分标准化可要小心,这样做可能会导致性能上出现问题。虽然地址和电话表分离通常可以达到
最佳状态,但是如果需要经常访问这类信息,或许在其父表中存放“首选”信息(比如
Customer 等)更为妥当些。非标准化和加速访问之间的妥协是有一定意义的。
— dhattrem
15. 使用多个名称字段
我觉得很吃惊,许多人在数据库里就给name 留一个字段。我觉得只有刚入门的开发人员才会这
么做,但实际上网上这种做法非常普遍。我建议应该把姓氏和名字当作两个字段来处理,然后在
查询的时候再把他们组合起来。
— klempan
Klempan 不是唯一一个注意到使用单个name 字段的人,要把这种情况变得对用户更为友好有好
些方法。我最常用的是在同一表中创建一个计算列,通过它可以自动地连接标准化后的字段,这
样数据变动的时候它也跟着变。不过,这样做在采用建模软件时得很机灵才行。总之,采用连接
字段的方式可以有效的隔离用户应用和开发人员界面。
— damon
16. 提防大小写混用的对象名和特殊字符
过去最令我恼火的事情之一就是数据库里有大小写混用的对象名,比如CustomerData。这一问
题从Access 到Oracle 数据库都存在。我不喜欢采用这种大小写混用的对象命名方法,结果还不
得不手工修改名字。想想看,这种数据库/应用程序能混到采用更强大数据库的那一天吗?采用全
部大写而且包含下划符的名字具有更好的可读性(CUSTOMER_DATA),绝对不要在对象名的
字符之间留空格。
— bfren
17. 小心保留词
要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突,比如,最近我编写的一个
ODBC 连接程序里有个表,其中就用了DESC 作为说明字段名。后果可想而知!DESC 是
DESCENDING 缩写后的保留词。表里的一个SELECT *语句倒是能用,但我得到的却是一大堆
毫无用处的信息。
— Daniel Jordan
18. 保持字段名和类型的一致性
在命名字段并为其指定数据类型的时候一定要保证一致性。假如字段在某个表中叫做
“agreement_number”,你就别在另一个表里把名字改成“ref1”。假如数据类型在一个表里
是整数,那在另一个表里可就别变成字符型了。记住,你干完自己的活了,其他人还要用你的数
据库呢。
— setanta
19. 仔细选择数字类型
在SQL 中使用smallint 和tinyint 类型要特别小心,比如,假如你想看看月销售总额,你的总额字
段类型是smallint,那么,如果总额超过了$32,767 你就不能进行计算操作了。
— egermain
20. 删除标记
在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除
某一行;最好采用清除数据程序而且要仔细维护索引整体性。
— kol
21. 避免使用触发器
触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采
用触发器,你最好集中对它文档化。
— kol
22. 包含版本机制
建议你在数据库中引入版本控制机制来确定使用中的数据库的版本。无论如何你都要实现这一要
求。时间一长,用户的需求总是会改变的。最终可能会要求修改数据库结构。虽然你可以通过检
查新字段或者索引来确定数据库结构的版本,但我发现把版本信息直接存放到数据库中不更为方
便吗?。
— Richard Foster
23. 给文本字段留足余量
ID 类型的文本字段,比如客户ID 或定单号等等都应该设置得比一般想象更大,因为时间不长你
多半就会因为要添加额外的字符而难堪不已。比方说,假设你的客户ID 为10 位数长。那你应该
把数据库表字段的长度设为12 或者13 个字符长。这算浪费空间吗?是有一点,但也没你想象的
那么多:一个字段加长3 个字符在有1 百万条记录,再加上一点索引的情况下才不过让整个数据
库多占据3MB 的空间。但这额外占据的空间却无需将来重构整个数据库就可以实现数据库规模
的增长了。
— tlundin
24. 列命名技巧
我们发现,假如你给每个表的列名都采用统一的前缀,那么在编写SQL 表达式的时候会得到大
大的简化。这样做也确实有缺点,比如破坏了自动表连接工具的作用,后者把公共列名同某些数
据库联系起来,不过就连这些工具有时不也连接错误嘛。举个简单的例子,假设有两个表:
Customer 和Order。Customer 表的前缀是cu_,所以该表内的子段名如下:cu_name_id、
cu_surname、cu_initials 和cu_address 等。Order 表的前缀是or_,所以子段名是:
or_order_id、or_cust_name_id、or_quantity 和or_description 等。
这样从数据库中选出全部数据的SQL 语句可以写成如下所示:
Select * from Customer, Order
Where cu_surname = "MYNAME"
and cu_name_id = or_cust_name_id
and or_quantity = 1;
在没有这些前缀的情况下则写成这个样子:
Select * from Customer, Order
Where Customer.surname = "MYNAME"
and Customer.name_id = Order.cust_name_id
and Order.quantity = 1
第1 个SQL 语句没少键入多少字符。但如果查询涉及到5 个表乃至更多的列你就知道这个技巧
多有用了。
— Bryce Stenberg
第3 部分— 选择键和索引
1. 数据采掘要预先计划
我所在的市场部门一度要处理8 万多份联系方式,同时填写每个客户的必要数据(这绝对不是小
活)。我从中还要确定出一组客户作为市场目标。当我从最开始设计表和字段的时候,我试图不
在主索引里增加太多的字段以便加快数据库的运行速度。然后我意识到特定的组查询和信息采掘
既不准确速度也不快。结果只好在主索引中重建而且合并了数据字段。我发现有一个指示计划相
当关键——当我想创建系统类型查找时为什么要采用号码作为主索引字段呢?我可以用传真号码
进行检索,但是它几乎就象系统类型一样对我来说并不重要。采用后者作为主字段,数据库更新
后重新索引和检索就快多了。
— hscovell
可操作数据仓库(ODS)和数据仓库(DW)这两种环境下的数据索引是有差别的。在DW 环境
下,你要考虑销售部门是如何组织销售活动的。他们并不是数据库管理员,但是他们确定表内的
键信息。这里设计人员或者数据库工作人员应该分析数据库结构从而确定出性能和正确输出之间
的最佳条件。
— teburlew
2. 使用系统生成的主键
这一天类同技巧1,但我觉得有必要在这里重复提醒大家。假如你总是在设计数据库的时候采用
系统生成的键作为主键,那么你实际控制了数据库的索引完整性。这样,数据库和非人工机制就
有效地控制了对存储数据中每一行的访问。
采用系统生成键作为主键还有一个优点:当你拥有一致的键结构时,找到逻辑缺陷很容易。
— teburlew
3. 分解字段用于索引
为了分离命名字段和包含字段以支持用户定义的报表,请考虑分解其他字段(甚至主键)为其组
成要素以便用户可以对其进行索引。索引将加快SQL 和报表生成器脚本的执行速度。比方说,
我通常在必须使用SQL LIKE 表达式的情况下创建报表,因为case number 字段无法分解为
year、serial number、case type 和defendant code 等要素。性能也会变坏。假如年度和类型字
段可以分解为索引字段那么这些报表运行起来就会快多了。
— rdelval
4. 键设计4 原则
· 为关联字段创建外键。
· 所有的键都必须唯一。
· 避免使用复合键。
· 外键总是关联唯一的键字段。
— Peter Ritchie
5. 别忘了索引
索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到
解决。作为一条规则,我通常对逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用
唯一的非成组索引,对任何外键列采用非成组索引。不过,索引就象是盐,太多了菜就篌了。你
得考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写。
— tduvall
大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比
如运行查询显示主表和所有关联表的某条记录就用得上。还有,不要索引memo/note 字段,不
要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间。
— gbrayton
6. 不要索引常用的小型表
不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了。对这些插入和
删除操作的索引维护可能比扫描表空间消耗更多的时间。
— kbpatel
7. 不要把社会保障号码(SSN)选作键
永远都不要使用SSN 作为数据库的键。除了隐私原因以外,须知政府越来越趋向于不准许把
SSN 用作除收入相关以外的其他目的,SSN 需要手工输入。永远不要使用手工输入的键作为主
键,因为一旦你输入错误,你唯一能做的就是删除整个记录然后从头开始。
— teburlew
上个世纪70 年代我还在读大学的时候,我记得那时SSN 还曾被用做学号,当然尽管这么做是非
法的。而且人们也都知道这是非法的,但他们已经习惯了。后来,随着盗取身份犯罪案件的增
加,我现在的大学校园正痛苦地从一大摊子数据中把SSN 删除。
— generalist
8. 不要用用户的键
在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。通常的情况下不要
选择用户可编辑的字段作为键。这样做会迫使你采取以下两个措施:
· 在创建记录之后对用户编辑字段的行为施加限制。假如你这么做了,你可能会发现你的应用程
序在商务需求突然发生变化,而用户需要编辑那些不可编辑的字段时缺乏足够的灵活性。当用
户在输入数据之后直到保存记录才发现系统出了问题他们该怎么想?删除重建?假如记录不可
重建是否让用户走开?
· 提出一些检测和纠正键冲突的方法。通常,费点精力也就搞定了,但是从性能上来看这样做的
代价就比较大了。还有,键的纠正可能会迫使你突破你的数据和商业/用户界面层之间的隔
离。
所以还是重提一句老话:你的设计要适应用户而不是让用户来适应你的设计。
— Lamont Adams
不让主键具有可更新性的原因是在关系模式下,主键实现了不同表之间的关联。比如,
Customer 表有一个主键CustomerID,而客户的定单则存放在另一个表里。Order 表的主键可能
是OrderNo 或者OrderNo、CustomerID 和日期的组合。不管你选择哪种键设置,你都需要在
Order 表中存放CustomerID 来保证你可以给下定单的用户找到其定单记录。
假如你在Customer 表里修改了CustomerID,那么你必须找出Order 表中的所有相关记录对其进
行修改。否则,有些定单就会不属于任何客户——数据库的完整性就算完蛋了。
如果索引完整性规则施加到表一级,那么在不编写大量代码和附加删除记录的情况下几乎不可能
改变某一条记录的键和数据库内所有关联的记录。而这一过程往往错误丛生所以应该尽量避免。
— ljboast
9. 可选键有时可做主键
记住,查询数据的不是机器而是人。
假如你有可选键,你可能进一步把它用做主键。那样的话,你就拥有了建立强大索引的能力。这
样可以阻止使用数据库的人不得不连接数据库从而恰当的过滤数据。在严格控制域表的数据库
上,这种负载是比较醒目的。如果可选键真正有用,那就是达到了主键的水准。
我的看法是,假如你有可选键,比如国家表内的state_code,你不要在现有不能变动的唯一键上
创建后续的键。你要做的无非是创建毫无价值的数据。比如以下的例子:
Select count(*)
from address, state_ref
where
address.state_id = state_ref.state_id
and state_ref.state_code = 'TN'
我的做法是这样的:
Select count(*)
from address
where
and state_code = 'TN'
如你因为过度使用表的后续键建立这种表的关联,操作负载真得需要考虑一下了。
— Stocker
10. 别忘了外键
大多数数据库索引自动创建的主键字段。但别忘了索引外键字段,它们在你想查询主表中的记录
及其关联记录时每次都会用到。还有,不要索引memo/notes 字段而且不要索引大型文本字段
(许多字符),这样做会让你的索引占据大量的数据库空间。。
— gbrayton
第4 部分— 保证数据的完整性
1. 用约束而非商务规则强制数据完整性
如果你按照商务规则来处理需求,那么你应当检查商务层次/用户界面:如果商务规则以后发生变
化,那么只需要进行更新即可。
假如需求源于维护数据完整性的需要,那么在数据库层面上需要施加限制条件。
如果你在数据层确实采用了约束,你要保证有办法把更新不能通过约束检查的原因采用用户理解
的语言通知用户界面。除非你的字段命名很冗长,否则字段名本身还不够。— Lamont Adams
只要有可能,请采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还
包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层
保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。
— Peter Ritchie
2. 分布式数据系统
对分布式系统而言,在你决定是否在各个站点复制所有数据还是把数据保存在一个地方之前应该
估计一下未来5 年或者10 年的数据量。当你把数据传送到其他站点的时候,最好在数据库字段
中设置一些标记。在目的站点收到你的数据之后更新你的标记。为了进行这种数据传输,请写下
你自己的批处理或者调度程序以特定时间间隔运行而不要让用户在每天的工作后传输数据。本地
拷贝你的维护数据,比如计算常数和利息率等,设置版本号保证数据在每个站点都完全一致。
— Suhair TechRepublic
3. 强制指示完整性
没有好办法能在有害数据进入数据库之后消除它,所以你应该在它进入数据库之前将其剔除。激
活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处
理错误条件。
— kol
4. 关系
如果两个实体之间存在多对一关系,而且还有可能转化为多对多关系,那么你最好一开始就设置
成多对多关系。从现有的多对一关系转变为多对多关系比一开始就是多对多关系要难得多。
— CS Data Architect
5. 采用视图
为了在你的数据库和你的应用程序代码之间提供另一层抽象,你可以为你的应用程序建立专门的
视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的
自由。
— Gay Howe
6. 给数据保有和恢复制定计划
考虑数据保有策略并包含在设计过程中,预先设计你的数据恢复过程。采用可以发布给用户/开发
人员的数据字典实现方便的数据识别同时保证对数据源文档化。编写在线更新来“更新查询”供
以后万一数据丢失可以重新处理更新。
— kol
7. 用存储过程让系统做重活
解决了许多麻烦来产生一个具有高度完整性的数据库解决方案之后,我所在的团队决定封装一些
关联表的功能组,提供一整套常规的存储过程来访问各组以便加快速度和简化客户程序代码的开
发。在此期间,我们发现3GL 编码器设置了所有可能的错误条件,比如以下所示:
SELECT Cnt = COUNT (*)
FROM [Table>]
WHERE [primary key column>] = new value>
IF Cnt = 0
BEGIN
INSERT INTO [Table>]
( [ primary key column>] )
VALUES ( New value> )
END
ELSE
BEGIN
indicate duplication error>
END
而一个非3GL 编码器是这样做的:
INSERT INTO [Table>]
( [ primary key column>] )
VALUES
( New value> )
IF @@ERROR = 2627 -- Literal error code for Primary Key Constraint
BEGIN
indicate duplication error>
END
第2 个程序简单多了,而且事实上,利用了我们给数据库的功能。虽然我个人不喜欢使用嵌入文
字(2627)。但是那样可以很方便地用一点预先处理来代替。数据库不只是一个存放数据的地
方,它也是简化编码之地。
— a-smith
8. 使用查找
控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值
列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适
合查找:国家代码、状态代码等。
— CS Data Architect
第5 部分— 各种小技巧
1. 文档、文档、文档
对所有的快捷方式、命名规范、限制和函数都要编制文档。
— nickypendragon
采用给表、列、触发器等加注释的数据库工具。是的,这有点费事,但从长远来看,这样做对开
发、支持和跟踪修改非常有用。
— chardove
取决于你使用的数据库系统,可能有一些软件会给你一些供你很快上手的文档。你可能希望先开
始在说,然后获得越来越多的细节。或者你可能希望周期性的预排,在输入新数据同时随着你的
进展对每一部分细节化。不管你选择哪种方式,总要对你的数据库文档化,或者在数据库自身的
内部或者单独建立文档。这样,当你过了一年多时间后再回过头来做第2 个版本,你犯错的机会
将大大减少。
— mrs_helm
2. 使用常用英语(或者其他任何语言)而不要使用编码
为什么我们经常采用编码(比如9935A 可能是墨水笔的供应代码,4XF788-Q 可能是帐目编
码)?理由很多。但是用户通常都用英语进行思考而不是编码。工作5 年的会计或许知道
4XF788-Q 是什么东西,但新来的可就不一定了。在创建下拉菜单、列表、报表时最好按照英语
名排序。假如你需要编码,那你可以在编码旁附上用户知道的英语。
— amasa
3. 保存常用信息
让一个表专门存放一般数据库信息非常有用。我常在这个表里存放数据库当前版本、最近检查/修
复(对Access)、关联设计文档的名称、客户等信息。这样可以实现一种简单机制跟踪数据
库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境
特别有用。
— Richard Foster
4. 测试、测试、反复测试
建立或者修订数据库之后,必须用用户新输入的数据测试数据字段。最重要的是,让用户进行测
试并且同用户一道保证你选择的数据类型满足商业要求。测试需要在把新数据库投入实际服务之
前完成。
— juneebug
5. 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。换句话说,
针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。
— jgootee
6. Access 设计技巧
对复杂的Microsoft Access 数据库应用程序而言,可以把所有的主表放在一个数据库文件里,然
后增加其他数据库文件和装载同原有数据库有关的特殊函数。根据需要用这些函数连接到主文件
中的主表。比如数据输入、数据QC、统计分析、向管理层或者政府部门提供报表以及各类只读
查询等。这一措施简化了用户和组权限的分配,而且有利于应用程序函数的分组和划分,从而在
程序必须修改的时候易于管理。
— Dennis Walden
标签:
泸州
广西
济源
玉溪
吉林
商洛
文山
抚顺
巨人网络通讯声明:本文标题《数据库设计的折衷方法》,本文关键词 数据库,设计,的,折衷,方法,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
相关文章
下面列出与本文章《数据库设计的折衷方法》相关的同类信息!
数据库设计的折衷方法
作项目分析,数据库设计是一个很重要也很难的问题, 完全按照范式有可能不符合用户需求,不利于编程, 看来是具体问题具体分析,数据库设计是范式和需求的折中。 在上学时,没...
10-19
企业网站建设流程公布?北京巨推传媒网站代运营公司
前几日和大伙儿共享了一些有关网站基本建设步骤的新闻资讯,仅仅说来到网站的方案策划、网站域名备案和设计方案,西安...
03-01
三门峡外呼系统软件(三门峡seo外包公司)
本篇文章给大家谈谈三门峡外呼系统软件,以及三门峡seo外包公司对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔...
05-17
办理400电话多少钱?详细分析与比较
在现如今技术不断发展的社会中,比起手机号码,企业为何还要办理400电话呢?400电话可以说是企业集团传媒的一种重要形式...
07-21
电话机器人厂商外呼
目前,汇港通机器人可以为特定情况提供个性化的语音配置,在语音交互热库中具有大量词汇,播音员将其整合到销售场景中...
10-30
呼叫中心最佳搭档:30B+D与400电话完美结合
市场需求不断膨胀,服务需求不断完善,随着通信科技越来越发达,企业 呼叫中心 遍地开花,大大小小的电销和客服中心开...
10-20
400电话是什么 是怎样收费的免费400电话收费标准
400电话作为一种特殊的客户服务电话,已经被广泛推广,大大小小的企业一般会办理400号作为外部服务的总机。 由于这是一...
01-12
南宁公司外呼系统业务的简单介绍
本文目录一览: 1、电销客外呼系统都有那些功能? 2、公司想安装外呼系统? 3、外呼系统怎么样? 4、外呼系统是什么? 5、...
11-26
培训机构电话营销云呼_电话机器人
随着人工智能的进入以及技术的不断创新和改革,2019年,一些语音交互机器人已逐渐进入公众视野。 智能语音机器人与各行...
10-31
数字外呼系统(大数据外呼系统)
本篇文章给我们谈谈数字外呼体系,以及大数据外呼体系对应的常识点,希望对各位有所帮忙,不要忘了保藏本站喔。 本文...
11-06
选择400电话申请的企业为何很多?
在企业发展过程中,400电话的使用带来的好处是很明显的。也正是因为这样,选择400电话申请的企业数量也在逐步的增多。而...
04-05
深圳出台多项举措加快服务外包产业发展
深圳市将出台一揽子举措加快服务外包产业发展,并给予分档奖励。对于重点领域的服务外包骨干企业,最高可获300万元人民...
10-22
电销卡哪种套餐好点实惠(电销电话卡哪个比较便宜)
本文目录一览:1、现在想要办理一款价格便宜一点的电话卡套餐哪一种更合适呢?2、办电信卡哪个套餐最划算3、现在我如果...
07-10
通过身份改变的商标管理动态化
通过身份改变的动态化需要通过商标内部环境的变革,这里涉及由于消费者要求导致的改变,使得已有的商标效益变得不重要...
10-23
400电话办理指南
400电话和我们的手机号码类似,不同之处在于前者是企业使用,后者是个人使用。为保障400电话的安全和正规使用,国家规定...
05-09
智能电话机器人将颠覆传统电销模式
人工智能的发展速度或许对于普通人来说是看不到过程的,但是基于人工智能推出的产品却让大家看到了人工智能的发展结果...
10-24
400电话其实是门面号码不难记
400电话现在变得非常的多,每个企业都有一个固定的400电话,但是要寻找起来很多人都怕麻烦,怕寻找不到自己想要的电话号...
05-16
微信公众号代运营公司中不可外泄的问题有哪些?
一说起微信公众号代运营,很多企业和商家都错误性的觉得前期是需要花费巨大的本钱去做新媒体推行渠道的宣传,以为只有...
03-01
电话营销防止封号办法,电话销售怎么防封卡?
电话营销 防止 封号 办法,电话销售怎么防封卡? 智能 外呼 机器人发展初期,大多数公司都是选用 网关 +手机卡模式来外呼...
10-26
新能源汽车下乡活动第二批汽车企业及车型名单,长城、比亚迪、奇瑞在内
近日,工信部官微发布了"新能源汽车下乡活动第二批汽车企业及车型名单",该名单包括14家企业36个车型,两批名单共包括...
10-13
工信部:注销13家企业跨地区增值电信业务经营许可证
近日,工业和信息化部发布《关于注销13家企业跨地区增值电信业务经营许可证的通告》。 公告指出,广州市久邦数码科技有...
10-13
我的商标申请应包括哪些国际类别
向中国专利商标局(“ 商标局”)申请商标时,您必须申请特定类别(称为“国际类别”)中的特定商品和/或服务。 听起来...
10-23
杭州外呼系统壁纸(外呼系统功能介绍)
本篇文章给我们谈谈杭州外呼体系壁纸,以及外呼体系功用介绍对应的知识点,期望对各位有所协助,不要忘了保藏本站喔。...
05-17
绍兴白名单电销卡怎么样
绍兴白名单电销卡怎么样 电销企业最离不开的就是电销卡,因为电销卡可以满足电销企业的电话量需求! 做电销的应该都想...
12-15
娄底电销外呼系统软件哪个好
电销防封软件 通道稳定,24小时监控调度快至3秒到达, 三大运营商深度合作,线路安全稳定, 可根据不同行业制定不同的使...
11-18
电销推广信用卡话术怎么说(信用卡 推广)
本文目录一览:1、电销推广话术2、信用卡销售打电话怎么说3、账单分期电话销售话术电销推广话术 电话营销技巧及话术:...
07-10
美国吊销中国电信在美运营权,限60天内停止在美国服务
外媒消息,本周二,美国联邦通信委员会(FCC)以国家安全考虑为由,投票决定吊销中国电信美国子公司在美国的运营权,这...
10-13
申请400开头的电话步骤
【申请400开头的电话步骤】在巨人网络通讯申请400开头的电话号码,无月租、无开户费、无选号费等,只需要预存话费即可申...
04-21
百家号认证是怎样的
对于百家号认证来讲, 总是可能会存在各种各样的问题导致最终的审核通不过。如果我们在申请之前就先搞清楚原因的话,...
03-01
Python正则表达式中的量词符号与组问题小结
正则表达式中的符号 例子 | 是或的关系,只要存在就会被捕获 匹配到的数据只按字符串顺序返回,而不是按照匹配规则返回...
10-18
AI电销机器人贴吧(ai智能电销机器人哪家费用低)
今天给各位分享AI电销机器人贴吧的知识,其中也会对ai智能电销机器人哪家费用低进行解释,如果能碰巧解决你现在面临的...
05-16
银川电销卡外呼系统违法吗
银川 电销卡 外呼系统违法吗 电话防封系统的中间号系统原理:业务员拨打客户电话,通过系统会先自动给系统指定的中间号...
11-15
服务外包人才缺16万 成都启动“人才计划”
本报讯(记者 韩利)到2013年,成都服务外包从业人员将达到22万人。前日,记者从成都市服务外包人才培训机构授牌仪式上...
10-22
摩托罗拉被谷歌附体后:份额下滑或再陷泥潭
5月19日,中国商务部网站发布公告正式批准谷歌收购摩托罗拉移动,这宗125亿美元的手机厂商收购案在渡过了315天后,终于跨...
01-16
400电话对于绑定号码的要求
企业在考虑400电话申请作为推广宣传使用时,也需要考虑400电话对于绑定号码。那么400电话对于绑定号码要求有哪些呢?只要...
05-09
高频防封电话卡代理推荐(高频抗封卡真的假的)
本篇文章给咱们谈谈高频防封电话卡署理引荐,以及高频抗封卡真的假的对应的知识点,期望对各位有所协助,不要忘了保藏...
06-17
Laravel框架使用Redis的方法详解
本文实例讲述了Laravel框架使用Redis的方法。分享给大家供大家参考,具体如下: 安装 laravel中使用redis首先需要你通过 Compo...
10-18
湖南智能电话机器人(湖南智能机器人培训)
今日给各位共享湖南智能电话机器人的常识,其间也会对湖南智能机器人训练进行解说,假如能可巧处理你现在面对的问题,...
11-07
江苏人工外呼系统排名(外呼系统排行)
本篇文章给咱们谈谈江苏人工外呼体系排名,以及外呼体系排行对应的常识点,期望对各位有所协助,不要忘了保藏本站喔。...
11-06
快手商家号的货源
快手不管怎么说,尽管其开发的时间也才是短短的两年不到就作为现在最受欢迎的一个平。并且在此最为重要的一点便是现在...
03-01
专属400电话,400电话代理
专属400电话,400电话代理400电话代理商为你解答。 河南400电话办理流程如下步骤选择号码和套餐如果你想办理400电话,你需...
07-20
为VMware虚拟机中的Linux系统设置固定IP的方法
1.配置DNS: 修改 /etc/resolv.conf 文件,添加如下代码: 复制代码 代码如下: nameserver 202.96.128.166 nameserver 202.96.134.133 2.配置固定...
10-20
移动客服外呼系统(移动外呼客服岗位简介)
今天给各位分享移动客服外呼系统的知识,其中也会对移动外呼客服岗位简介进行解释,如果能碰巧解决你现在面临的问题,...
11-06
智能家居设备在5g的支持下不断进行技术上的研发(智能生活5g)
从1G到4G,移动通讯的迭代发展解决了人和人之间的沟通问题,而到了5G时代,还要在曾经的基础上加上人与物、物与物之间的...
11-07
上海抗封号防封电话费用-热门
上海抗封号防封电话费用现在电销机器人的能力大家应该是都看得见的,少很多的企业招人都转向了电销机器人,目前销售市...
01-15
成都移动呼叫中心软件在哪可以办理,外呼线路-价格透明
成都移动呼叫中心软件在哪可以办理,外呼线路你有什么具体的要求?在日益激烈的商业竞争中,企业需要采用更先进的服务...
12-16
长春怎么申请400电话(长春电话客服)
长春怎么申请400电话(长春电话客服) 400电话已经成为很多企业必备的电话营销工具,不仅可以提升企业形象,还可以方便...
08-14
物联网自助充电桩(智能共享充电桩)
国家电网公司近日发布了《2018年供电工程第二次招标采购招标公告》。本次招标充电桩总数11615台,总功率7416000千瓦。业内...
11-07
温州自动外呼系统平台(温州自动化有限公司)
本篇文章给我们谈谈温州主动外呼体系渠道,以及温州主动化有限公司对应的知识点,期望对各位有所帮忙,不要忘了保藏本...
05-18
怎么办理河南400电话(河南 400电话)
怎么办理河南400电话(河南 400电话) 您是否想为自己的企业或个人客服搭建一套高效、便捷的沟通渠道?河南400电话是一个...
08-14
做外呼机器人的公司
2、那么多家电话机器人有什么区别?【做外呼机器人的公司】 外呼机器人具有强大的学习能力,这和它强大的系统是分不开...
10-24
数据库设计的折衷方法
作项目分析,数据库设计是一个很重要也很难的问题, 完全按照范式有可能不符合用户需求,不利于编程, 看来是具体问题具体分析,数据库设计是范式和需求的折中。 在上学时,没...
10-19
本页收集关于数据库设计的折衷方法的相关信息资讯供网民参考!
推荐文章
沾化地图标注
百度地图标注点添加链接
百度手机地图标注
福建语音外呼系统公司
网络电话外呼系统软件
济南销售外呼系统厂家
高德地图标注住宅地址
常州400电话办理
惠州外呼电话营销系统防封号软件
宿州外呼系统软件
物流地图标注软件
兰州小型外呼系统运营商
360外呼系统
赣州外呼电销机器人招商
悟空智电销机器人
舟山自动外呼系统
平凉360地图标注
大连自动外呼系统公司
语音外呼系统合法不
山西ai电销机器人怎么样
昌邑电话机器人
温江区地图标注app
云外呼系统一般多少钱
地图标注这个工作怎么样入驻
泉州人工智能电销机器人哪家强
武汉大学地图标注
宜兴电话机器人
广东保险智能外呼系统销售价格
安徽外呼系统联系方式
电销机器人的广告语
开拓者电话机器人
蜂迎智能电话机器人
长沙外呼系统代理
广东电销外呼回拨系统多少钱
湖北高频外呼系统原理是什么
抖音网吧地图标注
地图标注公司长沙
靠谱的外呼线路供应商
南充手机外呼系统
商丘外呼营销系统多少钱
百度地图标注事业
甘肃销售外呼系统厂家
搜狗面馆地图标注
电销机器人是一个怎么样的
温州办理400电话
js点击地图标注请求数据
400电话申请口碑好
防封电销机器人供应商
腾讯地图标注商户要收费么
焦作销售外呼系统
宿迁人工外呼系统排名
安徽电商智能外呼系统销售价格
遥感地图标注
电销外呼系统有录音吗
地图标注收费哪家贵
做地图标注怎么加快速度
电信外呼系统打不了电话怎么办
智能营销外呼系统源码
地图标注在哪里宣传
地图标注定位自己的店铺
智能外呼系统好吗
北京公司外呼系统运营商
安徽稳定外呼系统报价
不是商户百度地图标注
惠州智能外呼系统一般多少钱
上海销售外呼系统
徐州呼叫中心外呼系统稳定吗
福州外呼系统运营商
抖音地图标注推广术语表
地图标注要现场拍照
临沂语音电销机器人供应商
鱼塘怎么做地图标注点
导航地图标注地址簿
地图标注搜索
佛山400电话办理中心
小语
新余地图标注店标
怎么注册搜狗地图标注中心
京华宠物店地图标注
百度地图标注的信息能修改吗
百度地图标注不显示号码
电话自动外呼系统费用
世界地图标注四大洋七大洲
河南智能秒客来电话机器人
南京电销机器人有哪些
黑龙江稳定外呼系统供应商
北京千呼电话机器人
酒店地图标注多少钱入住
地图标注公司靠谱吗
网络电话外呼系统app
外呼系统有市场前景吗
付费百度地图标注
泉州防封电销卡购买
高德地图标注认领有什么好处
400电话申请个人
杭州防封电销机器人公司
四川自动外呼系统收费
外呼盒子和外呼系统
电销整改对机器人有影响吗
400电话办理授权委托书
ai电话机器人就是电话答录机
办理400电话行业排行
台州企业外呼系统
离线地图标注在地图上
金华呼叫中心外呼系统哪家好
通辽自动外呼系统
任城电话外呼营销系统
智能外呼系统费用
智能硅基电销机器人
外呼系统用交话费吗
小区地图标注教程
山西外呼销售系统招商
天津电话机器人电销系统
义乌防封电销卡价格
电销机器人智能呼叫中心
信用卡400电话申请
什么是商户地图标注
营销外呼系统多少钱一个月
广西电销机器人的前景
a3外呼系统教程
数据库设计的折衷方法
上一篇:
数据库设计经验谈
下一篇:
Access与sql server的语法区别总结
一起分享吧
产品关键词: 数据库设计的折衷方法 数据库,设计,的,折衷,方法,