博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
主从表设计和编程的几种实现办法
阅读量:6422 次
发布时间:2019-06-23

本文共 970 字,大约阅读时间需要 3 分钟。

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

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

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

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

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

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

    这样以来,不用建立主从表之间的外键关联 - 命存一线,本身就“关联”起来了。好处是编码简单。但会引起以下问题:

    (1)分隔符可能与保存的数据中的字符串重复,引起混淆;
    (2)当子表中的记录过多和/或过长的时候,显得愚笨,并会有存储上的问题;
    (3)不适合记录是二进制数据的从表。
    (4)从表的字段多于一个时,基本很难实现。

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

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

本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/286532,如需转载请自行联系原作者

你可能感兴趣的文章
Ubuntu 12.04上享用新版本Linux的功能
查看>>
logstash + grok 正则语法
查看>>
Zimbra开源版(v8.6)安装说明
查看>>
Android性能优化之TraceView和Lint使用详解
查看>>
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>
讨论:今日头条适配方案使用中出现的问题
查看>>
CSS3 3D翻转动画
查看>>
要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
查看>>
javascript实现音频mp3播放
查看>>
html5-离线缓存
查看>>
linux系统安装完后的常见工作
查看>>
在Linux服务器、客户端中构建密钥对验证进行远程连接
查看>>
揪出MySQL磁盘消耗迅猛的真凶
查看>>
和“C”的再遇
查看>>
一键安装kubernetes 1.13.0 集群
查看>>
RabbitMq的集群搭建
查看>>
spring boot + mybatis 同时访问多数据源
查看>>
URL中汉字转码
查看>>
[转]go正则实例
查看>>