0 0

这样的数据库表该怎样设计?5

现在有一个workflow的系统,里面有一个交易信息表,这个交易信息表总共加起来有大概110列(column),这个交易信息表里面包含一个订单信息(大概有30个column),交易信息与订单信息的实体关系是一对一,现在需要设计这个交易,有以下三种考虑:

1, 只设计一个交易信息表,里面包含110列(column)
2, 设计成两个表,一个表的交易信息表(80列),另一个订单表(30列),订单表中包含一个交易ID建立一一对应关系
3, 设计成一个表,但是行列转换过来(只有5到6个column的样子),也就是说设计成Attribute_Name和Attribute_Value的形式,这样的话一条交易记录需要插入110条记录。

问题: 如果是你你该怎样设计?这样设计的原因是什么?
2012年9月03日 22:56

2个答案 按时间排序 按投票排序

0 0

为什么会有这么多,我猜测是有大量重复的字段,比如

商品1,商品2......商品N,这样


如果是这样,我的建议是第三种。

用性能挟持设计,必须得有更好的理由,比如已经发生的事实,或是100%可预见的,等等。
不然的话,解决性能可以有很多方式,这种绝对是错误的。


我见过这样的设计,至少在维护上很要命,要维护的还刚好是我们的队伍。

之前预留了N个字段,后来发现需要增加个,于是

- 数据库表要改。
空间碎片问题,不是简单加一列就好的。

- 相关程序,配置都要改。
原本无关的批处理等等也需要改!

- 虽然这次需求是加一列,但因为非常繁琐,索性多加几列,万一以后呢?

最终,无论DB还是PG臃肿不堪,基本上是一场灾难!

2012年9月04日 09:48
0 0

数据量多大,如果不大三者都行;

1, 只设计一个交易信息表,里面包含110列(column)
查询/写入只对一张表操作;比如我只查订单/只查交易 则方案2更好;

2, 设计成两个表,一个表的交易信息表(80列),另一个订单表(30列),订单表中包含一个交易ID建立一一对应关系

只查询部分数据的时候好;但插入的表多; 80列还可以再分;

3, 设计成一个表,但是行列转换过来(只有5到6个column的样子),也就是说设计成Attribute_Name和Attribute_Value的形式,这样的话一条交易记录需要插入110条记录。

这个直接摒弃  动态表,数据量上来了,性能肯定跟不上;

2012年9月03日 23:43

相关推荐

    MySQL数据库表导出Word工具,生成数据库说明文档

    "MySQL数据库表导出Word工具"提供了一种便捷的方式,将数据库结构和内容转换为易于理解的Word文档,这对于开发、运维以及非技术背景的团队成员都非常有帮助。 首先,这个工具的主要功能是将MySQL数据库中的表结构和...

    怎样优化数据库查询,提高优化效率?.pdf

    应尽可能的避免更新索引数据列,因为索引数据列的顺序就表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当的资源。若应用系统需要频繁更新索引数据列,那么需要考虑否应将该索引建为...

    数据库原理与应用课程设计------多媒体教室申请管理系统

    1、数据库课程设计要求见 文档”数据库原理及应用课程设计要求“ 2、该压缩包里含参考资料、部分源文件、成品3个文件夹 3、参考资料文件夹里含学习课件、相关CDM图、业务流程图、数据字典、流程图 应该怎样做的...

    Yale人脸数据库1到10

    数据库的结构设计独特,文件名为"CroppedYale",表明图像已经被裁剪以只包含人脸部分,这样可以减少背景噪声,使算法能够更专注于面部特征。这种处理方式使得算法可以更集中地学习和理解人脸的关键部位,如眼睛、...

    组态软件中实时数据库系统的设计和实现

    ### 组态软件中实时数据库系统的设计和实现 #### 概述 本文主要探讨了工控组态软件中实时数据库系统的设计与实现方法。实时数据库系统作为工控组态软件的核心部分,对于确保整个控制系统的正常运行至关重要。文章...

    Qt登录注册与数据库操作.zip

    开发者可能会使用Qt的数据库模块QSqlDatabase,通过QSqlQuery对象执行INSERT语句将数据插入到用户表中。 "communication.cpp"可能是处理用户注册和登录时网络通信的部分,比如发送验证码或者验证邮箱。这可能涉及...

    创建Library数据库语句

    根据提供的文件信息,我们可以梳理出以下几个关键的知识点: ### 1. 创建数据库 #### SQL语句解析 ...这些知识点涵盖了数据库创建、表结构设计以及基本的数据操作命令,对于学习SQL语言具有重要的参考价值。

    数据库专业课程设计任务计划书.doc

    课程设计目标是通过对实际问题的分析、设计和实现,使学生学会怎样把书本上学到的知识用于处理实际问题,培养学生动手能力和灵活掌握教学内容。 根据课程设计要求,学生需要针对一个软件系统选题进行并完善一个较为...

    ORACLE数据库物理分布设计.doc

    ORACLE数据库物理分布设计 概述 我们无论使用哪种数据库,无论怎样设计数据库,我想都会遵从一个原则:数据安全性 和性能高效这两个主要方面,但是关于这两个方面的话题太多,在这里就不一 一陈述,我只是从数据库...

    Access教程第二章建立数据库.pdf

    本章节将从数据库设计的概念和基本表的创建开始,讨论表之间的关系和数据库的修改、设计和编辑。 一、数据库设计概念 数据库设计是指对数据库的整体结构和内容的规划和设计。Access 2003 数据库是一个包含多种对象...

    校园网数据库性能优化技术

    为了避免密集运用聚集函数,降低数据库多表连接,提出了采用反范式的设计方法,实施采用结构化数据组建的校园网数据库的优化。实践表明,该方法性能良好,操作简单,有效地提升了校园网的数据库性能。

    Access2000数据库实验.pdf

    Access 2000 是一个功能强大且广泛应用的数据库管理系统,本实验旨在通过实践操作,掌握 Access 2000 的基本操作和数据库设计与实施的方法。 一、查询设计视图 查询设计视图是 Access 2000 中的一个重要组件,它...

    Ehlib5.3 著名的数据库连接控制

    Ehlib 5.3 是一个广泛使用的数据库连接和数据展示组件库,尤其在 Delphi 开发环境中。这个版本特别针对 Delphi 2010 进行了优化,为开发者提供了强大的数据库操作和界面展示功能。以下是关于 Ehlib 5.3 的详细知识点...

    java版学生信息系统与数据库相关

    对于"student05"这样的文件,可能是该项目的源代码、数据库文件或测试数据,进一步分析这些文件可以帮助我们理解具体实现细节。 总之,构建Java版学生信息系统并实现与Access数据库的交互,需要掌握JDBC技术,理解...

    SQL Server 2000数据库程序设计模拟题(70-229).pdf

    ### SQL Server 2000数据库程序设计模拟题解析 #### 题目一:优化I/O性能 **题目背景**: 作为一名SQL Server 2000联机事务处理数据库的开发人员,面对大量含有百万行记录的表格,以及为了提高访问效率而建立的簇...

    使用火狐sqlite Manager管理数据库的例子

    不过,有时直接使用SQLite Manager这样的工具进行数据库调试和数据预处理会非常有用,特别是在处理复杂查询或者处理大量数据时。 总之,掌握使用SQLite Manager管理SQLite数据库的方法,能为iOS开发者提供更高效的...

    毕业设计,基于VB+ACCESS开发的俄罗斯方块游戏课程设计,内含完整源代码,数据库,毕业论文

    毕业设计,基于VB+ACCESS开发的俄罗斯方块游戏课程设计,内含完整源代码,数据库,毕业论文 在21世纪这个信息高度发达、高速流通的时代,计算机的普及以及计算机网络的广泛应用,让普通人能够接触到比以往更多的...

    2022年数据库工程师面试题答案.doc

    6. 怎样查看数据库引擎的报错日志? * 解决方法:可以查看 alert log。 三、SQL 练习题 1. 编写 SQL,已知关系模式:s(s#,sname) c(c#,cname) sc(s#,c#,score) ① 找出选修了 c1 课程的学员;可以使用以下三种方法...

    ex2 利用ArcCatalog 管理地理空间数据库 在ArcMap中编辑属性数据

    - **概念设计**: 在创建个人地理数据库之前,需要先完成数据库的概念设计,明确每个图层对应的数据表结构。 - **创建数据库**: 在 ArcCatalog 中创建个人地理数据库。这通常涉及指定数据库的位置和名称,以及选择...

    #####对数据库实战相关案例的详细解析

    - **创建数据库和表**:按照设计好的模型创建数据库和表结构。 - **权限管理**:设置合理的用户权限,确保数据安全。 - **备份与恢复**:定期备份数据库,制定灾难恢复计划。 - **性能监控**:持续监控数据库性能,...

Global site tag (gtag.js) - Google Analytics