数据库开发的时候为什么要设计编码 有哪些设计编码的方法?有什么算法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、有哪些设计编码的方法?如小F说的:匈牙利命名法,骆驼命名法等,亦或自创2、参考http://zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95算法之一. 数据库设计规范 1 目的 规范数据库设计。 2 概述 从数据库的设计原则 设计文档几方面论述数据库设计的规范思想及命名规则。 3 数据库应用结构 根据对一般业务系统的分析,将数据库和程序系统统一进行整体描述,展示数据库的 表之间以及与程序模块间的关系。 3.1 数据表和程序模块的分类 根据“处理特点”,将数据表和程序模块进行分类如下: 数据表分类:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结 算数据表、决策数据表。 程序模块分类:初始化、业务处理、完整性检测与修正、结算处理、统计处理。 3.1.1 数据表分类说明 业务数据表:记录业务发生的过程和结果。如,合同、出仓单、申请单、凭证。 基本编码表:描述业务实体的基本信息和编码。如,产品、客户、供应商、雇员。 辅助编码表:描述属性的列表值。如,合同类型、职称、民族、付款方式。 系统信息表:存放与系统操作、业务控制有关的参数。如,用户信息、权限、用户配 置信息、成本核算方式。 累计数据表:存放业务的当前值和累计值。如,当前库存、当前存款、累计销售、累 计支出、应收账款。 结算数据表:存放各个时期末的结存数。如,月末库存、月末银行存款、应收账款月 结。 决策数据表:存放各个时期内发生的统计值。如,月销售统计、月回款统计、出入库 统计。 3.1.2 程序模块分类说明 初始化:系统运行前对系统进行数据的初始化。如,库存初始化。 业务处理:业务过程的控制和结果记录。如,合同录入、费用审批、出入库。 完整性检测与修正:对累计数据表进行检查并自动修正。如对当前库存、当前存款、 累计销售的检查和重新计算。 结算处理:计算并记录各个时期末的结存数。库存月结、应收账款月结。 统计处理:计算并记录各个时期内发生的统计数。如,统计月销售、统计月回款、统 计出入库。 3.2 数据表间的关系 业务数据表 <--> 基本编码表 主-外键关系。如,合同表 <--> 客户编码表; 业务数据表 <--> 辅助编码表 主-外键关系。如,合同表 <--> 付款方式; 业务数据表、累计数据表、结算数据表:累计数据表=结算数据表(上期末) + 业务数 据表(本期内发生)。如当前库存=上月末库存数+(本月入库数-本月出库数); 决策数据表 <--> 业务数据表 决策数据表的数据是由业务数据表中数据导出(统计)的; 3.3 数据表与程序模块间的关系 由一个例子(仓库管理)来说明数据表与程序模块之间的关系: . 系统使用前,由初始化模块对库存数(累计数据表)和上月末库存数(结存数据表)进 行初始化; . 当有入库业务发生时,由入库模块(业务处理)将入库单录入并保存到入库单明细帐( 业务数据表)中,同时将入库数累加到库存数(累计数据表)中; . 定期或不定期,库存数核算模块(检查完整性检测与修正)根据上月末的库存数(结存 数据表)、本月已发生数(业务数据表)检查当前的库存数(累计数据表)是否符合,不符合 则给出提示,可手工或自动进行更正(当前库存数=上月末库存数+本月入库数-本月出库数 ); . 每月初,进行上月的月结处理。月结模块(结算处理)根据上月初的库存数(结存数据 表)、上月发生数(业务数据表)计算出上月末的库存数(累计数据表)。公式为:上月末库 存数=上月初库存数+上月入库数-上月出库数; . 每个月月结后,库存业务月统计模块(统计处理)统计上月的各种库存商品的入库和 出库数,便于查询和生成报表,也作为决策支持的数据基础。 3.4 数据表命名时对数据表分类的考虑 . 业务数据表:t_d_ <系统标识> _ <表标识> 。如销售系统的合同表 t_d_SH_Contract 或 t_d_SH_合同; . 基本编码表:t_b_[ <系统标识> ]_ <表标识> 。如客户编码表t_b_Customer 或 t_b_客 户; . 辅助编码表:t_a_[ <系统标识> ]_ <表标识> 。如合同类别t_a_ContType 或 t_a_合同 类别; . 系统信息表:t_s_[ <系统标识> ]_ <表标识> 。如用户表t_s_User 或 t_s_用户; . 累计数据表:t_t_ <系统标识> _ <表标识> 。如当前库存表t_t_SO_Stock 或 t_t_SO_ 库存; . 结算数据表:t_c_ <系统标识> _ <表标识> 。如库存月结表t_c_SO_StockMonth 或 t_c_SO_库存月结; . 决策数据表:t_w_ <系统标识> _ <表标识> 。如月销售统计表t_w_SH_SellMonth 或 t_w_SH_月销售统计; 注:[]内的内容表示可选。如“t_s_[ <系统标识> ]_ <表标识> ”表示t_s_SH_User 和 t_s_User 都是符合规则的。 4 数据库结构原则 规定除数据库设计所遵循的范式外的一些适用原则,在遵循数据库设计范式的基础上 ,合理地划分表,添加状态和控制字段等。 4.1 辅助编码表 为了使辅助编码表能起到预期的效能,又不因过多的辅助编码表难以管理,故对辅助 编码表的使用作如下规定: 1. 当某辅助编码表的编码允许用户添加时,应设计成“独立”的数据表;否则,将不 允许用户添加编码的各辅助编码表合并成一个“通用”的辅助编码表。 2. “独立”的辅助编码表与主表的列采用主-外约束保证列数据完整性。 3. “通用”的辅助编码表与各主表间没有约束关系,主表列的数据完整性由列说明的 “域”来保证。 4. “通用”的辅助编码表除编码和名称列外,还有一个标识列,用来标识合并前的各 码表,该标识列+编码列作为该表的主键。 5. 对于“独立”的辅助编码表,用户只可添加新的编码和改变名称,并且不能改变一 个编码所代表的意义;对于“通用”的辅助编码表,原则上不允许用户修改,或只有限地 允许修改名称。 4.2 基本编码表 1. 基本编码表可以有如下的标识列:内编码、外编码、助记码、简称、全称。内编码 (唯一编码)作为主键有程序自动生成,用户不可见;外编码(唯一编码)由用户按某种 规则自行定义,用户可见;助记码为拼音缩,方便录入,不唯一,重码时由列表选择;简 称用于列表显示和报表,以便缩短行宽。以上的列在实现时可视情况和习惯加以删减。 2. 当码表的列较多且也行较多时,可将上述的标识列和常用的信息存于一个表,将其 它的信息另表存储。 4.3 业务数据表 1. 设有‘录入人’和‘录入日期’列,由系统自动记录。 2. 记录单据的表中设置“自动单据号”,由两个字符开始以区分单据类型,后跟一数 字序列表示序号。‘自动单据号’由系统自动生成,作为主表的主键,不允许用户修改。 当有对应的纸质单据时,设置“单据号”用于记录纸质单据的单据号。 3. 明细表中设有行序号,自动记录行的录入顺序。 4. 设置“存档标记”列,用于抽取数据到决策数据库时的更新标记。插入新行或修改 已有行时设置该标记;数据抽取后清除该标记。 5. 对于用于查询过滤条件的列,不可为空,以免行“丢失”。 6. 对于数值列,不可为空,“0”作为默认值。 7. 对于必要的“冗余”列,如客户名称,应有相应的程序保持各“冗余”列的同一性 ,以免出现异议。 8. 设置“过程状态”列和“记录状态”列。过程状态列用于记录如创建、审核、记账 、冲红等状态;记录状态用于记录如有效、删除等状态。 5 数据库命名原则 5.1 表名 . 业务数据表:t_d_ <系统标识> _ <表标识> 。 . 基本编码表:t_b_[ <系统标识> ]_ <表标识> 。 . 辅助编码表:t_a_[ <系统标识> ]_ <表标识> 。 . 系统信息表:t_s_[ <系统标识> ]_ <表标识> 。 . 累计数据表:t_t_ <系统标识> _ <表标识> 。 . 结算数据表:t_c_ <系统标识> _ <表标识> 。 . 决策数据表:t_w_ <系统标识> _ <表标识> 。 5.2 视图 v_ <视图类型> _[ <系统标识> ]_ <视图标识> 。视图类型参见《表的分类》。 5.3 存储过程 p_[ <系统标识> ]_ <存储过程标识> 5.4 函数 f_[ <系统标识> ]_ <函数标识> 5.5 触发器 tr_ <表名> _ <i,u,d的任意组合> (after) ti_ <表名> _ <i,u,d的任意组合> (instead) 5.6 自定义数据类型 ud_ <自定义数据类型标识> _ <数据类型> 5.7 Default df_ <Default标识> 5.8 Rule ru_ <Rule标识> 5.9 主键 pk_ <表名> _ <主键标识> 5.10 外键 fk_ <表名> _ <主表名> _ <外键标识> 循环保存 myeclipse链接sqlsever2005数据库 建外键的问题 关于EXCEL导入SQL2008R2表 报错的问题 sysbase 数据库中probe 的作用是什么??删了有什么后果 优化一下SQL语句,谢谢 怎样写一个全局触发器,记录所有的操作,包括客户端来源等信息? sql语句错误,请指教 SQL语句:有T1和T2两个表,表结构一样,怎样把T1有,而T2没的记录复制到T2表中?以姓名字段为准 高手请进!!如何实现SQLserver和DBASE数据库时时更新? 不好意思, 求教个简单的问题分组的 SQL按物料名称并列显示问题
1、有哪些设计编码的方法?
如小F说的:匈牙利命名法,骆驼命名法等,亦或自创2、参考http://zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95
算法之一.
1 目的 规范数据库设计。 2 概述 从数据库的设计原则 设计文档几方面论述数据库设计的规范思想及命名规则。 3 数据库应用结构
根据对一般业务系统的分析,将数据库和程序系统统一进行整体描述,展示数据库的 表之间以及与程序模块间的关系。 3.1 数据表和程序模块的分类 根据“处理特点”,将数据表和程序模块进行分类如下: 数据表分类:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结 算数据表、决策数据表。
程序模块分类:初始化、业务处理、完整性检测与修正、结算处理、统计处理。
3.1.1 数据表分类说明
业务数据表:记录业务发生的过程和结果。如,合同、出仓单、申请单、凭证。
基本编码表:描述业务实体的基本信息和编码。如,产品、客户、供应商、雇员。
辅助编码表:描述属性的列表值。如,合同类型、职称、民族、付款方式。
系统信息表:存放与系统操作、业务控制有关的参数。如,用户信息、权限、用户配 置信息、成本核算方式。
累计数据表:存放业务的当前值和累计值。如,当前库存、当前存款、累计销售、累 计支出、应收账款。
结算数据表:存放各个时期末的结存数。如,月末库存、月末银行存款、应收账款月 结。
决策数据表:存放各个时期内发生的统计值。如,月销售统计、月回款统计、出入库 统计。 3.1.2 程序模块分类说明 初始化:系统运行前对系统进行数据的初始化。如,库存初始化。
业务处理:业务过程的控制和结果记录。如,合同录入、费用审批、出入库。
完整性检测与修正:对累计数据表进行检查并自动修正。如对当前库存、当前存款、 累计销售的检查和重新计算。
结算处理:计算并记录各个时期末的结存数。库存月结、应收账款月结。
统计处理:计算并记录各个时期内发生的统计数。如,统计月销售、统计月回款、统 计出入库。 3.2 数据表间的关系 业务数据表 <--> 基本编码表 主-外键关系。如,合同表 <--> 客户编码表;
业务数据表 <--> 辅助编码表 主-外键关系。如,合同表 <--> 付款方式;
业务数据表、累计数据表、结算数据表:累计数据表=结算数据表(上期末) + 业务数 据表(本期内发生)。如当前库存=上月末库存数+(本月入库数-本月出库数);
决策数据表 <--> 业务数据表 决策数据表的数据是由业务数据表中数据导出(统计)的; 3.3 数据表与程序模块间的关系
由一个例子(仓库管理)来说明数据表与程序模块之间的关系:
. 系统使用前,由初始化模块对库存数(累计数据表)和上月末库存数(结存数据表)进 行初始化;
. 当有入库业务发生时,由入库模块(业务处理)将入库单录入并保存到入库单明细帐( 业务数据表)中,同时将入库数累加到库存数(累计数据表)中;
. 定期或不定期,库存数核算模块(检查完整性检测与修正)根据上月末的库存数(结存 数据表)、本月已发生数(业务数据表)检查当前的库存数(累计数据表)是否符合,不符合 则给出提示,可手工或自动进行更正(当前库存数=上月末库存数+本月入库数-本月出库数 );
. 每月初,进行上月的月结处理。月结模块(结算处理)根据上月初的库存数(结存数据 表)、上月发生数(业务数据表)计算出上月末的库存数(累计数据表)。公式为:上月末库 存数=上月初库存数+上月入库数-上月出库数;
. 每个月月结后,库存业务月统计模块(统计处理)统计上月的各种库存商品的入库和 出库数,便于查询和生成报表,也作为决策支持的数据基础。 3.4 数据表命名时对数据表分类的考虑 . 业务数据表:t_d_ <系统标识> _ <表标识> 。如销售系统的合同表 t_d_SH_Contract 或 t_d_SH_合同;
. 基本编码表:t_b_[ <系统标识> ]_ <表标识> 。如客户编码表t_b_Customer 或 t_b_客 户;
. 辅助编码表:t_a_[ <系统标识> ]_ <表标识> 。如合同类别t_a_ContType 或 t_a_合同 类别;
. 系统信息表:t_s_[ <系统标识> ]_ <表标识> 。如用户表t_s_User 或 t_s_用户;
. 累计数据表:t_t_ <系统标识> _ <表标识> 。如当前库存表t_t_SO_Stock 或 t_t_SO_ 库存;
. 结算数据表:t_c_ <系统标识> _ <表标识> 。如库存月结表t_c_SO_StockMonth 或 t_c_SO_库存月结;
. 决策数据表:t_w_ <系统标识> _ <表标识> 。如月销售统计表t_w_SH_SellMonth 或 t_w_SH_月销售统计;
注:[]内的内容表示可选。如“t_s_[ <系统标识> ]_ <表标识> ”表示t_s_SH_User 和 t_s_User 都是符合规则的。 4 数据库结构原则
规定除数据库设计所遵循的范式外的一些适用原则,在遵循数据库设计范式的基础上 ,合理地划分表,添加状态和控制字段等。 4.1 辅助编码表 为了使辅助编码表能起到预期的效能,又不因过多的辅助编码表难以管理,故对辅助 编码表的使用作如下规定: 1. 当某辅助编码表的编码允许用户添加时,应设计成“独立”的数据表;否则,将不 允许用户添加编码的各辅助编码表合并成一个“通用”的辅助编码表。
2. “独立”的辅助编码表与主表的列采用主-外约束保证列数据完整性。
3. “通用”的辅助编码表与各主表间没有约束关系,主表列的数据完整性由列说明的 “域”来保证。
4. “通用”的辅助编码表除编码和名称列外,还有一个标识列,用来标识合并前的各 码表,该标识列+编码列作为该表的主键。
5. 对于“独立”的辅助编码表,用户只可添加新的编码和改变名称,并且不能改变一 个编码所代表的意义;对于“通用”的辅助编码表,原则上不允许用户修改,或只有限地 允许修改名称。
4.2 基本编码表 1. 基本编码表可以有如下的标识列:内编码、外编码、助记码、简称、全称。内编码 (唯一编码)作为主键有程序自动生成,用户不可见;外编码(唯一编码)由用户按某种 规则自行定义,用户可见;助记码为拼音缩,方便录入,不唯一,重码时由列表选择;简 称用于列表显示和报表,以便缩短行宽。以上的列在实现时可视情况和习惯加以删减。
2. 当码表的列较多且也行较多时,可将上述的标识列和常用的信息存于一个表,将其 它的信息另表存储。 4.3 业务数据表 1. 设有‘录入人’和‘录入日期’列,由系统自动记录。
2. 记录单据的表中设置“自动单据号”,由两个字符开始以区分单据类型,后跟一数 字序列表示序号。‘自动单据号’由系统自动生成,作为主表的主键,不允许用户修改。 当有对应的纸质单据时,设置“单据号”用于记录纸质单据的单据号。
3. 明细表中设有行序号,自动记录行的录入顺序。
4. 设置“存档标记”列,用于抽取数据到决策数据库时的更新标记。插入新行或修改 已有行时设置该标记;数据抽取后清除该标记。
5. 对于用于查询过滤条件的列,不可为空,以免行“丢失”。
6. 对于数值列,不可为空,“0”作为默认值。
7. 对于必要的“冗余”列,如客户名称,应有相应的程序保持各“冗余”列的同一性 ,以免出现异议。
8. 设置“过程状态”列和“记录状态”列。过程状态列用于记录如创建、审核、记账 、冲红等状态;记录状态用于记录如有效、删除等状态。
5 数据库命名原则 5.1 表名 . 业务数据表:t_d_ <系统标识> _ <表标识> 。
. 基本编码表:t_b_[ <系统标识> ]_ <表标识> 。
. 辅助编码表:t_a_[ <系统标识> ]_ <表标识> 。
. 系统信息表:t_s_[ <系统标识> ]_ <表标识> 。
. 累计数据表:t_t_ <系统标识> _ <表标识> 。
. 结算数据表:t_c_ <系统标识> _ <表标识> 。
. 决策数据表:t_w_ <系统标识> _ <表标识> 。 5.2 视图 v_ <视图类型> _[ <系统标识> ]_ <视图标识> 。视图类型参见《表的分类》。 5.3 存储过程 p_[ <系统标识> ]_ <存储过程标识> 5.4 函数 f_[ <系统标识> ]_ <函数标识> 5.5 触发器 tr_ <表名> _ <i,u,d的任意组合> (after)
ti_ <表名> _ <i,u,d的任意组合> (instead) 5.6 自定义数据类型 ud_ <自定义数据类型标识> _ <数据类型> 5.7 Default df_ <Default标识> 5.8 Rule ru_ <Rule标识> 5.9 主键 pk_ <表名> _ <主键标识> 5.10 外键 fk_ <表名> _ <主表名> _ <外键标识>