indexedDB是否支持外键?如果没有,我可以模拟外键吗?

时间:2014-01-30 18:02:28

标签: indexeddb

我正在构建一个使用IndexedBD的网络应用程序。我来自SQL背景,因此概念不同。具体来说,我的理解是indexedDB中没有“外键”的真实概念。因此,我试图找出检索相关对象的最快方法,在SQL世界中,这将是一个外键。

例如,使用SQL,假设我们有以下表格:

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

现在,如果我们在carBrand中有一条记录,其中包含brandName=FordbrandInitial='F',然后是carModel中包含数据modelName = Mustang和{的记录{1}}。

要在SQL世界中显示此brand = (FK)Ford记录的brandInitial,我可以使用点“。”符号。简单地说,Mustang会显示myCarInstance.brand.brandInitial。我不必存储到F记录中的brandInitial,因为指向外键的指针包含该数据。

现在转向indexedDB,会设置相同的场景:

carModel

要拥有相同的记录(福特野马),我的理解是我们会进行两次objectStore "carBrand" objectStore "carModel" 次呼叫。首先,我们添加.add。接下来(以及我对“最佳实践”的理解并不完整)添加“福特野马”,我们会在brandName: "Ford"商店中添加一条记录,其中包含以下数据:

carModel

因此,设置此数据后,是否有“快速”方式来检索记录的modelName: "Mustang" brand: "Ford" ?我是否必须打开一个的交易来检索brandInital品牌的首字母,或者我还应该使用其他方法吗?

1 个答案:

答案 0 :(得分:0)

在像indexeddb这样的键值存储中,objectstore之间没有关系。如果您的关系是父子关系,则可以使用分层键,例如[carBrand,carModel]。在appengine db api中查看有关分层键的更多详细信息。