簡體   English   中英

JPA組合密鑰的最佳實踐是什么?

[英]What is the Best Practice for Composite Key with JPA?

我正在為我的項目創建一個數據庫,但是我面臨關於最佳實踐的疑問。 我的具體情況是:我有一個表,用於存儲名為“ floor”的建築物的樓層。我有第二個表,用於存儲稱為“建築物”的建築物;我有第三個表,用於存儲建築物之間的關系,稱為building_x_floor

問題是此第三張桌子。 我該怎么辦?

  1. 只有兩列,一列將FK固定在建築物的PK上,另一列將FK固定在地板的PK上。
  2. 上面的兩列和第三列是否具有PK並與觸發器控制一致,禁止插入(idbuilding,idfloor)的復制touple?

我的第一個想法是使用第一個選項,但是我四處搜尋並且談論我聽說它並不總是最佳選擇。

因此,我要求提供指導。 我正在使用MySQL 5.6.17

您不需要第三張桌子。 因為buildingfloor之間存在一對多的關系。 因此,一棟建築物有多個樓層,而一個樓層屬於一棟建築物。 不要讓事情變得復雜。 即使您需要帶有組合鍵的表,也應小心。 您需要重寫equalshashCode方法。

我仍然對這種方法不滿意。 我並不是說這是錯誤或不適當的,與之相去甚遠。 我試圖了解信息的組織方式和性能。

如果我是1:*關系,就像一個學生可能在一個學期的大學課程中修讀一個以上的科目,我將擁有第3個表格(學期,學生,iddiscipline)。

如果我試圖擺脫聯接表,我的關系將由學生表或主題表內的FK建立。 這樣做是沒有意義的,因為學生表是用於存儲與注冊人的信息有關的一組信息的表,而學科表則保存學科的數據,例如內容,學時...參數表。

因此,我需要一個表進行聯接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM