`
mengdejun
  • 浏览: 408970 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

主从表设计和编程

    博客分类:
  • Dat
阅读更多

主从表操作是数据库相关编程中绕不过去的技术之一。为了减少数据冗余、满足数据库的范式要求,必需考虑建立主表和从表,从以外键关联。主从表可以看做是对母表进行纵向切割而得到的。

    由于表个数的增加,和外键关系的存在(“关系型数据库”的名称就是从这里来的吧?),使操作主从表比操作单表复杂了很多。编程的复杂度和工作量也成倍增加 - 至少增加了3倍。

    主从表从表设计和编程角度一般可以这么做:

 

    1,主表和从表分离,以外键关联(dedecms)。

    这是最常见和典型的做法,数据库理论的教科书上一般就是这么讲的。这样做的好处是,充分利用关系型数据库的优点,从表可以有多个字段,可以保存大量的数据和记录个数。而且由于客观上实现了表的纵向切割,使数据存储结构得到了优化。但由于牵扯到2个表,所以编程时,对表的编辑(增、删、改、查)总是涉及到二个步骤,还会引起主表和从表操作的原子性问题,即:主表数据操作完成后,同一个事务里,从表的关联数据操作是否也全部完成了?在一些关键行业的关键业务里,主从表操作必需以事务的方式来操作,主表和从表操作,要么全部完成,要么一个都不完成,只要其中一个出错,事务必需回滚到未操作前的状态(这一般是“事务”机制自动完成的)。所以编码考虑的因素很多。

 

    2,另一种变通的方法是,从表的数据存贮在主表同一条记录的另一个字段里,用分隔符连接起来。

    这样以来,不用建立主从表之间的外键关联 - 命存一线,本身就“关联”起来了。好处是编码简单。但会引起以下问题:
    (1)分隔符可能与保存的数据中的字符串重复,引起混淆;
    (2)当子表中的记录过多和/或过长的时候,显得愚笨,并会有存储上的问题;
    (3)不适合记录是二进制数据的从表。
    (4)从表的字段多于一个时,基本很难实现。

    既然是变通的方法,这种方法仅适合部分情况:从表数据类型一般是字符串型,且数据很短;从表记录很少,不需要通过建立索引来提高检索效率。从表的字段也必需较少,最好就一个字段,多于2个,编程的某些细节就反而复杂了。

    所以,无果有十足的把握,或确信从表不会再重构的情况下,才采用第二种办法。否则还是乖乖按照数据库理论来做,以减少可能发生的风险,保证项目进度。

 

 

 

分享到:
评论

相关推荐

    Delphi主从表自创实例

    在Delphi编程环境中,主从表(Master-Detail)是一种常见的数据展示方式,它用于处理一对多的关系,例如一个订单可以包含多个商品项。在这个"Delphi主从表自创实例"中,我们将深入探讨如何在Delphi中实现这种关系,...

    利用delphi中的内存表来制作主从表

    利用TClientDataSet制作主从表是数据库应用设计中的常见方法,可以有效地管理和展示关联数据,类似于Access或SQL Server中的关系模型。下面我们将详细介绍如何使用Delphi的内存表来实现这一功能。 首先,了解主从表...

    使用DataGridView控件实现主从表

    在数据库设计中,主从表(也称为父子表或一对多关系)用于表示两个表之间的关系,其中一个表(主表)有一条记录对应多个记录在另一个表(从表)中。例如,一个员工表(主表)可能包含多个项目表(从表),每个员工...

    .net 主从表实例

    在这个实例中,我们将探讨如何使用C#和.NET来实现主从表的数据编辑功能,并通过datagrid展示和操作数据。 首先,我们需要理解datagrid控件在.NET中的作用。datagrid是Windows Forms或ASP.NET中用于显示和编辑表格...

    C#+List+GridControl实现主从表嵌套

    本篇将深入探讨如何利用`C#`中的`List<T>`集合类以及DevExpress的`GridControl`控件实现主从表的嵌套显示,这在数据库操作和数据可视化中非常常见。 `List<T>`是.NET Framework中`System.Collections.Generic`命名...

    xml主从表保存

    主从表关系是数据库设计中的常见模式,主表通常包含唯一标识符(主键),而从表通过外键与主表关联,存储与主表相关的详细信息。在XML中实现主从表保存,主要是将这两类数据结构转换为XML文档的形式,并保持它们之间...

    C# Dev GridView 三级主从表示例

    在本示例中,我们将深入探讨如何使用C#和DevExpress的GridView实现三级主从表的嵌套。 首先,主从表是一种数据可视化方式,它允许在一个表格中显示主要数据(主表),并在适当的地方通过链接或展开按钮展示与之关联...

    三层架构主从复合实体类编程

    主从复合实体类编程,即在实体类中包含了主表和从表的关联信息,这在诸如仓库管理系统中的入库单据和入库货品明细这类场景中极为常见。 ### 重要知识点解析 #### 实体类代码生成 在进行主从复合实体类编程时,...

    计算机USB系统原理及其主从机设计

    ### 计算机USB系统原理及其主从机设计 #### USB协议原理 USB(Universal Serial Bus)即通用串行总线,是一种广泛应用于个人电脑、移动设备和其他电子产品的标准接口技术。USB的设计目的是为了简化外设连接过程,...

    cxGrid主从表Demo.rar

    1. **设置主从表关系**:如何定义主表和从表的关联,通常是通过设置主键和外键字段来实现。 2. **数据源配置**:如何配置数据组件(如TDataSource、TClientDataSet等)来连接数据库并提供数据。 3. **界面布局**:...

    RDLC_建立主从表显示源码

    在IT领域,RDLC(Report Definition Language ...通过分析和理解这些代码,可以深入了解如何在实际项目中运用RDLC创建主从表报表,提高报表设计和数据展现的能力。同时,这也是一种提升SQL查询和.NET编程技能的好方法。

    导出EXCEL和建立主从表示例

    主从表是一种数据库设计模式,主表存储关键信息,而从表(或子表)存储与主表相关的详细信息。在Excel中,可以使用超链接或者VLOOKUP、INDEX/MATCH等函数来实现主从表之间的关联。但在数据库环境中,如MySQL或SQL ...

    主从表模糊查询delphi 数据库

    Delphi是一款强大的对象 Pascal 编程工具,广泛用于构建桌面应用程序,而主从表(Master-Detail)结构则是数据展示和管理的常见模式。在这个模式下,主表通常包含一组“父”记录,从表则关联着主表的特定记录,形成...

    VC 操作 SQL Server 主从表.zip

    【标题】"VC 操作 SQL Server 主从表.zip" 提示我们这个压缩包可能包含了一些使用Visual C++(VC)编程语言与SQL Server数据库交互,特别是处理主从表关系的教程、代码示例或者库文件。主从表是数据库设计中的常见...

    用ASP.NET在同一网页中显示主从关系表的相关数据

    在ASP.NET中,为了实现在同一网页上直观地展示具有主从关系的数据表,可以通过一系列的编程技巧来达到目的。这种方法主要是利用ASP.NET提供的DataSet对象来管理数据库中的数据,再通过网页上的Table布局以及...

    struts-hibernate-nested-demo.rar_DEMO_JSTL de_java 主从表_从表

    在这个DEMO中,主从表的概念是数据库设计中常见的关系。主表通常包含一些关键信息,而从表则依赖于主表的某些字段,形成关联关系。例如,一个订单(主表)可能有多个订单详情(从表),每个订单详情都与一个特定的...

    获知主从cxgrid的从表记录数

    CXGrid提供了一种直观的方式来显示和编辑数据,包括主从表关系,这种关系允许用户在一个表格中查看主数据,在另一个表格中查看与主数据相关联的详细信息。"获知主从cxgrid的从表记录数"这一主题,涉及到如何获取从表...

    非DB的cxGrid主从表格

    总之,非DB的cxGrid主从表格的实现需要手动管理数据源和数据更新,通过编程逻辑来维护主从表格的关联关系。虽然相比直接绑定数据库,这种方式需要更多的代码工作,但它提供了更大的灵活性,适用于各种复杂的数据展现...

    CC-Link 主从程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例

    CC-Link 主从程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例CC-Link 主从程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例CC-Link 主从程序.zip三菱PLC编程案例源码资料...

    超好用的数据控件(附源码+Demo),针对多个主从表数据,轻松设置

    此外,源码和DEMO也是学习DELPHI组件设计和事件驱动编程的好材料。 总之,"超好用的数据控件"为DELPHI开发者提供了处理多主从表数据的强大工具,结合源码和DEMO,可以帮助他们快速上手,提升开发效率。在实际项目中...

Global site tag (gtag.js) - Google Analytics