java - Um die komplexe Eins-zu-Viele-zu-Viele-Beziehung in der Datenbank zu vermeiden, habe ich die Datenbank ohne Fremdschlüssel entworfen. Ist das möglich?
为情所困
为情所困 2017-05-17 10:08:09
0
5
510

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

为情所困
为情所困

Antworte allen(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年前还是挺多的。 主要是业务独立的考虑吧。 喜欢把业务完全放在应用端,数据库只是用来持久化使用的。

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!