java - 为了避免数据库一对多多对多的复杂关系,我对数据库的设计是没有外键,这种方式可以吗
为情所困
为情所困 2017-05-17 10:08:09
0
5
468

为了避免数据库一对多多对多的复杂关系,我对数据库的设计是表里的字段都没有外键,其关系使用setter和getter来手动关联,但是程序写下来了,功能是可以实现,但是发现要写一大堆的getter与setter,很痛苦,还是说从一开始就不应该这样设计呢

为情所困
为情所困

全部回复 (5)
巴扎黑

这样设计很好啊,你只是缺一个数据库抽象层,或者 ROM。

数据库理论有个概念叫:CAP

CAP理论是由 EricBrewer 教授提出的,在设计和部署分布式应用的时候,存在三个核心的系统需求,这个三个需求之间存在一定的特殊关系。三个需求如下:

C: Consistency 一致性
A: Availability 可用性
P: Partition Tolerance分区容错性

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个

而大部分 nosql 数据库都在 C(一致性)上妥协了。

所以放弃外键是明智的。外键是为了保持所有的数据一致性,但是很多时候我们根本不需要数据是实时一致的,我们只需要保证最终一致性就可以了。

  • http://www.csdn.net/article/2...

  • http://duanple.blog.163.com/b...

    漂亮男人

    1,现在互联网基本不用外键.
    2,get set的问题可以试试Lombok

      世界只因有你

      我们在实际应用中一般外键都是用程序去控制的。不在数据库层面。

        世界只因有你

        第一,关系型数据库的外键(此处特指映射关系)还是很有用的
        第二,外键(此处特指外键约束)是不应该存在的。

          曾经蜡笔没有小新

          现在用外键的应用越来越少了。 在10年前还是挺多的。 主要是业务独立的考虑吧。 喜欢把业务完全放在应用端,数据库只是用来持久化使用的。

          十多年前开始工作的时候的一些项目数据库,数据库也参与到业务当中,但是后期发现维护起来很痛苦。后来项目维护的时候,为了能应对所有问题,不得不增加了数据库专员。在项目总结中也提出这个问题了。数据库专员的成本很高的。

            最新下载
            更多>
            网站特效
            网站源码
            网站素材
            前端模板
            关于我们 免责声明 Sitemap
            PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!