Heim > Fragen und Antworten > Hauptteil
Um die komplexe Eins-zu-Viele-Beziehung in der Datenbank zu vermeiden, ist mein Design der Datenbank so, dass die Felder in der Tabelle keine Fremdschlüssel haben. Die Beziehungen werden jedoch manuell mithilfe von Settern und Gettern verknüpft. Das Programm ist geschrieben und die Funktion kann implementiert werden, aber ich habe festgestellt, dass es sehr mühsam ist, viele Getter und Setter zu schreiben, oder ich hätte es nicht von Anfang an so entwerfen sollen
巴扎黑2017-05-17 10:10:09
这样设计很好啊,你只是缺一个数据库抽象层,或者 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...
曾经蜡笔没有小新2017-05-17 10:10:09
现在用外键的应用越来越少了。 在10年前还是挺多的。 主要是业务独立的考虑吧。 喜欢把业务完全放在应用端,数据库只是用来持久化使用的。
十多年前开始工作的时候的一些项目数据库,数据库也参与到业务当中,但是后期发现维护起来很痛苦。后来项目维护的时候,为了能应对所有问题,不得不增加了数据库专员。在项目总结中也提出这个问题了。数据库专员的成本很高的。