我有一個關於如何將數據存儲在數據庫中的最佳實踐或理想方式的問題。作爲一個例子,我有一個分配了國家的網站。從關係數據庫移動到mongodb
表國家:ID |名稱|α-2
表站點:ID | countryId |名
每個站點都有對國家ID的參考。
我想創建一個使用流星和它的mongodb的新網站,並想知道我應該如何存儲對象。我是否創建了一個colleciton「國家」和「網站」並使用country _id作爲參考?然後使用transform來解析引用?
看着SimpleSchema我想出了以下內容:
Schemas.Country = new SimpleSchema ({
name: {
type: String
},
alpha2: {
type: String,
max: 2
}
});
Schemas.Site = new SimpleSchema({
name: {
type: String,
label: "Site Name"
},
country: {
type: Schemas.Country
}
});
Countries = new Meteor.Collection("countries");
Countries.attachSchema(Schemas.Country);
Sites = new Meteor.Collection("sites");
Sites.attachSchema(Schemas.Site);
我只是想知道這是如何然後存儲在數據庫中。由於我有2個集合,但在網站集合中,我也定義了國家對象。如果一個國家更改其alpha2代碼(非常不可能)會怎麼樣?
此外,這將繼續我有一個名爲「條件」的集合。每個條件都會定義一個網站。我現在可以將整個Site對象定義爲條件對象。如果Sitename發生了變化呢?我是否需要在所有條件對象中手動更改它?
這使我困惑了一下。我非常感謝你的所有想法。
我看了看看發佈複合材料,看起來很有前途。我會用它做一些測試。可能我最終混合了規範化和非規範化的數據。特別是在不太可能發生變化的國家。 (名稱和ISO代碼)。這可能只是非正規化我猜? – Chris