主从表操作是数据库相关编程中绕不过去的技术之一。为了减少数据冗余、满足数据库的范式要求,必需考虑建立主表和从表,从以外键关联。主从表可以看做是对母表进行纵向切割而得到的。
由于表个数的增加,和外键关系的存在(“关系型数据库”的名称就是从这里来的吧?),使操作主从表比操作单表复杂了很多。编程的复杂度和工作量也成倍增加 - 至少增加了3倍。
主从表从表设计和编程角度一般可以这么做:
1,主表和从表分离,以外键关联。
这是最常见和典型的做法,数据库理论的教科书上一般就是这么讲的。这样做的好处是,充分利用关系型数据库的优点,从表可以有多个字段,可以保存大量的数据和记录个数。而且由于客观上实现了表的纵向切割,使数据存储结构得到了优化。但由于牵扯到2个表,所以编程时,对表的编辑(增、删、改、查)总是涉及到二个步骤,还会引起主表和从表操作的原子性问题,即:主表数据操作完成后,同一个事务里,从表的关联数据操作是否也全部完成了?在一些关键行业的关键业务里,主从表操作必需以事务的方式来操作,主表和从表操作,要么全部完成,要么一个都不完成,只要其中一个出错,事务必需回滚到未操作前的状态(这一般是 “事务”机制自动完成的)。所以编码考虑的因素很多。
2,另一种变通的方法是,从表的数据存贮在主表同一条记录的另一个字段里,用分隔符连接起来。
这样以来,不用建立主从表之间的外键关联 - 命存一线,本身就“关联”起来了。好处是编码简单。但会引起以下问题:
(1)分隔符可能与保存的数据中的字符串重复,引起混淆;
(2)当子表中的记录过多和/或过长的时候,显得愚笨,并会有存储上的问题;
(3)不适合记录是二进制数据的从表。
(4)从表的字段多于一个时,基本很难实现。
既然是变通的方法,这种方法仅适合部分情况:从表数据类型一般是字符串型,且数据很短;从表记录很少,不需要通过建立索引来提高检索效率。从表的字段也必需较少,最好就一个字段,多于2个,编程的某些细节就反而复杂了。
所以,无果有十足的把握,或确信从表不会再重构的情况下,才采用第二种办法。否则还是乖乖按照数据库理论来做,以减少可能发生的风险,保证项目进度。
分享到:
相关推荐
在ASP.NET中,为了实现在同一网页上直观地展示具有主从关系的数据表,可以通过一系列的编程技巧来达到目的。这种方法主要是利用ASP.NET提供的DataSet对象来管理数据库中的数据,再通过网页上的Table布局以及...
通过查看和修改这些文件,你可以了解和实现cxGrid非DB主从表格的具体实现。 总之,非DB的cxGrid主从表格的实现需要手动管理数据源和数据更新,通过编程逻辑来维护主从表格的关联关系。虽然相比直接绑定数据库,这种...
MySQL主从复制是一种常见的数据库高可用性和负载均衡解决方案,它允许数据从一个主数据库(Master)实时同步到一个或多个从数据库(Slave)。这个过程主要分为三个步骤: 1. **主库记录更改**:在主库上,所有的...
本篇文档将详细探讨如何利用Spring框架实现数据库的读写分离,并结合MySQL的主从复制机制,确保系统的稳定运行和高效响应。 ### 背景分析 在实际应用中,许多系统面临着数据读取压力远大于写入压力的情况,这导致...
此外,DS80C320内置了可编程看门狗定时器和掉电复位电路,并提供了DIP、PLCC和TQFP三种封装形式供设计选择。在逆变电源监控系统中,DS80C320被用于微处理器及外设模块的设计,它简化了硬件设计和编程,提高了系统...
本项目基于AT89S51单片机,利用C语言编写了主从机通信程序,旨在帮助开发者理解和实现这种通信模式。 AT89S51是一款经典的8位微控制器,由美国Atmel公司生产,广泛应用于各种嵌入式系统设计。它拥有4KB的闪存、256B...
总结来说,基于Protues的主从多机系统设计是一个综合性的项目,涵盖了硬件电路设计、软件编程、通信协议制定以及系统集成等多个方面,旨在锻炼学生的实践能力和理论知识的应用。这种设计不仅提高了通信的灵活性,也...
在电子工程和嵌入式系统领域,基于主从机的方波采样与处理设计是一项常见的任务,尤其在单片机应用中。本设计主要涉及以下几个关键知识点: 1. **单片机**:单片机(Microcontroller)是一种集成了CPU、内存、...
本研究主要探讨了如何利用MATLAB编程实现串行并行交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)算法,以解决主从配电网的分布式优化问题。以下将详细介绍相关知识点。 首先,MATLAB是一种...
总的来说,实现Windows下的Powerlink主从站通信是一项涉及硬件接口、网络协议、实时操作系统和应用层编程的综合任务。通过这样的实践,不仅可以深入理解Powerlink的工作原理,还能提高工业自动化领域的编程和调试...
2. **Spring MVC**:作为Spring的一部分,Spring MVC提供了MVC设计模式的实现,帮助开发者将模型、视图和控制器分离,使代码更易于维护和测试。它处理HTTP请求,将请求映射到相应的控制器方法,并负责渲染视图。 3....
具体到本篇介绍的"基于单片机的主从红外通信的系统设计",文中详细阐述了设计和实现一个以单片机PIC18F248为基础的主从式红外通信系统。 红外通信系统一般包含两个基本组成部分:红外发射电路和红外接收电路。发射...
**WP7主从视图示例源码**是针对Windows Phone 7平台设计的一个应用程序,它采用C#编程语言编写,展示了如何在WP7应用中实现主从视图的交互模式。主从视图是一种常见的用户界面设计模式,通常用于展示层次结构的数据...
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,是一种可编程的集成电路,用户可以在制造完成后根据自己的需要重新配置其内部逻辑结构和功能。FPGA具有高度的灵活性和可定制性,在数字信号处理、图像...
在提供的压缩包文件"SPI主从通信"中,可能包含有示例代码、配置文件以及相关的文档,这些资源可以帮助理解和实现STM32的SPI主从通信。通过学习和分析这些资料,开发者可以更好地掌握STM32 SPI通信的具体实现方法,并...
MODBUS协议是一种广泛应用的工业通信协议,它允许电子设备之间进行简单、高效的数据交换,特别是在PLC(可编程逻辑控制器)和嵌入式系统中。485接口则是串行通信接口,因其长距离传输能力和多设备网络能力而广受欢迎...
三菱PLC程序源码-CC-Link主从程序是一份重要的工业自动化领域的资源,主要涉及三菱公司的编程语言和其专有的通信协议——CC-Link。这份压缩包包含的源码可以为工程师提供有关如何实现CC-Link网络中的主站和从站通信...
通过对几种常见设计模式的理解和应用,开发者不仅可以提高代码质量,还能增强程序的性能和稳定性。无论是初学者还是经验丰富的工程师,掌握这些设计模式都将对项目开发产生积极的影响。 #### 七、扩展资源 对于...
在设计CC-Link主从程序时,我们需要考虑以下几个关键步骤: 1. 硬件配置:正确连接主站和从站的CC-Link接口,确保网络物理层的稳定。 2. PLC程序编写:使用三菱PLC的编程软件(如GX Developer)编写主站和从站的程序...
在本文中,我们将深入探讨如何使用基于ARM Cortex-M4内核的STM32F407IG微控制器实现一个基于RS232和RS485的MODBUS RTU通信协议主站应用。该示例代码是针对MDK5开发环境编写的,展示了如何通过编程控制主站的按钮来...