螺母和螺栓的樣本數據Thread Series
。我試圖確定這個數據集的主鍵。以下是一些有效組合的示例。主密鑰的列數
size form tpi
1/4 UNC 20
1/4 UNF 28
1/4 UNEF 32
5/16 UNC 18
5/16 UN 20
5/16 UNF 24
5/16 UN 28
5/16 UNEF 32
3/8 UNC 16
3/8 UN 20
3/4 UNC 10
最終我試圖建立拉下的web應用程序,它允許用戶選擇一個有效的螺栓菜單,如3/4-10UNC-2A HEX Head.
一個3/4-6UNC-2A HEX Head
是無效的,因爲他們不製造3/4" 螺栓每英寸6個線程(它不會被加載在這個表中)
第一個下拉選擇螺栓類型,第二個下拉提供基於螺栓類型可用的螺栓尺寸(在另一個數據庫中定義表)
第三次下拉將提供螺栓定義的最後部分,所以如果用戶選擇HE X Head,然後是5/16「,他們會看到UNC-18,UN-20,UNF-24,UN-28和UNEF-32的選擇。
我對PK(S)的選擇可能是:
- 替代和創造獨特的約束。
- 使用大小和形狀爲複合PK,它確定TPI
- 使用大小和TPI作爲複合PK,它確定形式
- 使用形式和TPI作爲PK,它確定尺寸
- 所有三個字段作爲PK(大概是錯的!)
看起來好像沒什麼關係,我選擇關於查詢的PK選項,因爲我會根據螺栓直徑來查詢其他兩個值。我遺漏的一點是與另一個表中的UN表單有關的2A值,以及需要進一步限制哪些ThreadSeries可以與螺栓類型一起使用的「doozey」。
我在Java EE中這樣做,使用JSF和JPA實體,如果該事項
主鍵(或複合鍵,就像你將可能正在朝着)是由唯一性決定的。根據我所看到的,唯一在所有列中唯一的東西都是三個值。但是,我想我的問題是,哪一列保證是唯一的?關於最後一列,哪兩列保證是唯一的? – Makoto
啊是的,我現在看到你的評論和仔細檢查後,如果我只使用PK三列中的兩列,5/16 UN 28失敗的唯一性。 – jeff
您是否應該使用代理鍵建立父級子女關係?表(ID,ParentID,FormType,TPI)這允許您構建允許用戶在表單或大小上過濾的模型。爲什麼要限制用戶在可能對錶單感興趣的所有尺寸時纔開始使用尺寸?這個層次允許你把你的2A值作爲給定大小/形式的父對象。 – xQbert