首頁  >  問答  >  主體

java - 為了避免資料庫一對多多對多的複雜關係,我對資料庫的設計是沒有外鍵,這種方式可以嗎

為了避免資料庫一對多多對多的複雜關係,我對資料庫的設計是表裡的欄位都沒有外鍵,其關係使用setter和getter來手動關聯,但是程式寫下來了,功能是可以實現,但是發現要寫一大堆的getter與setter,很痛苦,還是說從一開始就不應該這樣設計呢

为情所困为情所困2712 天前521

全部回覆(5)我來回復

  • 巴扎黑

    巴扎黑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...

    回覆
    0
  • 漂亮男人

    漂亮男人2017-05-17 10:10:09

    1,現在網路基本上不用外鍵.
    2,get set的問題可以試試Lombok

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-17 10:10:09

    我們在實際應用中一般外鍵都是用程式去控制的。不在資料庫層面。

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-17 10:10:09

    第一,關係型資料庫的外鍵(此處特指映射關係)還是很有用的
    第二,外鍵(此處特指外鍵約束)是不應該存在的。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-17 10:10:09

    現在用外鍵的應用越來越少了。 在10年前還挺多的。 主要是業務獨立的考慮吧。 喜歡把業務完全放在應用端,資料庫只是用來持久化使用的。

    十多年前開始工作的時候的一些專案資料庫,資料庫也參與到業務當中,但是後期發現維護起來很痛苦。後來專案維護的時候,為了能應付所有問題,只好增加了資料庫專員。在專案總結中也提出這個問題了。資料庫專員的成本很高的。

    回覆
    0
  • 取消回覆