2014-01-30 51 views
4

我正在構建一個利用IndexedBD的Web應用程序。我來自SQL背景,所以概念是不同的。具體而言,我的理解是,indexedDB中沒有真正的「外鍵」概念。因此,我試圖找出最快的方式來檢索一個相關的對象,在SQL世界中,它將是一個外鍵。indexedDB是否支持外鍵?如果沒有,我可以模擬外鍵嗎?

例如,SQL,假設我們有如下表:

table carBrand: 
    brandName 
    brandInitial 
table carModel: 
    modelName 
    brand (FK) 

現在,如果我們在carBrand持有brandName=FordbrandInitial='F',然後記錄在carModel保持該數據有記錄modelName = Mustangbrand = (FK)Ford

要在SQL世界中顯示此Mustang記錄的brandInitial,我可以使用點「。」。符號。簡單地說,myCarInstance.brand.brandInitial這將顯示F。由於指向外鍵的指針保存該數據,因此我不必在carModel記錄中存儲到brandInitial

現在移動到IndexedDB的,同樣的場景會被設置像這樣:

objectStore "carBrand" 
objectStore "carModel" 

具有相同的記錄(福特野馬)我的理解是,我們將做兩個.add電話。首先,我們添加brandName: "Ford"。下一步(在這裏就是我的「最佳實踐」的理解是不是固體)中增加了「福特野馬」我們將一個記錄添加到carModel店裏其中有這樣的數據:

modelName: "Mustang" 
brand: "Ford"  

所以,用這個數據設置,是否有「快速」的方式來檢索記錄的brandInital?我是否必須打開交易只需即可檢索F品牌初始值,還是有其他方法可以使用?

回答

0

在像indexeddb這樣的關鍵值存儲中,對象存儲之間沒有關係。如果你的關係是父母子女,你可以使用分級密鑰,如[carBrand,carModel]。查看有關appengine db api中分層鍵的更多詳細信息。

+3

是的,我意識到沒有與IndexedDB的實際關係,但我想知道是否有一些簡單的方法來遵循僞關係。經過更多的研究,我已經完成了將對象存儲在對象中的路徑。所以,而不是有關係,我只是有嵌套的對象。工程類似,但有點不同。現在我可以很好地做點符號。 – Garfonzo

+0

我不知道如何做到這一點,但我決定由於我正在與lovefield一起工作的項目的複雜性。在向您的前端堆棧添加更多技術之前,總會考慮權衡考慮因素,但這完全是另一個討論。 –

相關問題