鍍金池/ 問答/數(shù)據(jù)庫/ mongodb 數(shù)據(jù)結(jié)構(gòu)的一些疑問 大佬請進(jìn)!

mongodb 數(shù)據(jù)結(jié)構(gòu)的一些疑問 大佬請進(jìn)!

初次接觸nosql
在表結(jié)構(gòu)上有些疑問
比如設(shè)計一個游戲的用戶表
用戶的背包應(yīng)該是包含在用戶表中還是單獨建表?


// 用戶表 user
{
    _id: '',
    name: '',
    email: '',
    ....
    backpack: [
        {
            // 背包1
        },
        {
            // 背包2
        }
    ]
}
// 還是
// 用戶表 user
{
    _id: '',
    name: '',
    email: '',
    ...
}

// 用戶背包表
{
    _id: '',
    user_id: '',
    ...
}

求解!感謝!

回答
編輯回答
近義詞

可以嵌套在user表里:
{

'_id':ObjectId("52ffc33cd85242f436000001"),
'name':'Jackey',
backpack: {
    'backpack_color': 'white'
}

}
類似這樣,如果數(shù)量越來越多的話,可以考慮索引:
就是單獨建表,然后在引用背包表的id放到 user表里即可

2017年12月5日 18:43
編輯回答
拼未來

這個問題應(yīng)該這樣考慮的:
你的背包的個數(shù)和屬性是一定的,是單獨的個體。其他的地方也是可以使用的,不一定只有用戶使用: 這就要單獨創(chuàng)建一個背包的表和用戶沒有關(guān)系的

然后你用戶也是單獨的個體,也要單獨創(chuàng)建一個用戶表

然后你用戶和背包是多對多的關(guān)系,這時候只要在創(chuàng)建一個用戶背包關(guān)聯(lián)的表的就可以了

這樣的話,就不用頻繁的更新用戶和背包的表了,只需要關(guān)注這個關(guān)聯(lián)的表進(jìn)行增刪改就可以了

2017年11月4日 08:07
編輯回答
入她眼

這是一個簡單的數(shù)據(jù)問題吧,涉及到了數(shù)據(jù)庫的涉及。
個人建議是分開建立,通過外鍵約束關(guān)聯(lián)。

2018年4月27日 22:28