簡(jiǎn)書(shū) 賈小強(qiáng)
轉(zhuǎn)載請(qǐng)注明原創(chuàng)出處泵喘,謝謝!
在非關(guān)系數(shù)據(jù)庫(kù)比如MonogoDB中基于類型JSON的文檔儲(chǔ)存數(shù)據(jù)瞬矩,而在關(guān)系型數(shù)據(jù)庫(kù)中基于互相連接的表格儲(chǔ)存數(shù)據(jù)攒磨,那么這兩種數(shù)據(jù)形式之間怎么互相轉(zhuǎn)換呢?這篇文章簡(jiǎn)單分析
單表
如下數(shù)據(jù)形式
[
("key1","value1"),
("key2","value2"),
("key3","value3")
]
在關(guān)系型數(shù)據(jù)庫(kù)中蜗字,可以用一張表儲(chǔ)存
一對(duì)一
如下數(shù)據(jù)形式
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
在關(guān)系型數(shù)據(jù)庫(kù)中打肝,可以用兩張表分表存key和value,兩張表之間是一對(duì)一關(guān)系
一對(duì)多
如下數(shù)據(jù)形式
{
"key1": ["value11","value12"],
"key2": ["value21","value22"]
}
在關(guān)系型數(shù)據(jù)庫(kù)中挪捕,可以用兩張表分表存key和value粗梭,兩張表之間是一對(duì)多關(guān)系
更復(fù)雜的形式,如果再多一層
{
"key1": {
"key11": ["value111","value112"],
"key12": ["value121","value122"]
},
"key2": {
"key21": ["value211","value212"],
"key22": ["value221","value222"]
}
}
在關(guān)系型數(shù)據(jù)庫(kù)中级零,可以用三張表分表存keyX断医,keyXX和value,其中keyX和keyXX表是一對(duì)多關(guān)系奏纪,keyXX和value也是一對(duì)多關(guān)系
推論:JSON層次越多孩锡,在關(guān)系型數(shù)據(jù)庫(kù)中也就是越多的一對(duì)多關(guān)系表
JSON轉(zhuǎn)表格
- 整個(gè)JSON轉(zhuǎn)成一張表格,嵌套文檔實(shí)際上也可以看成列
- 整個(gè)JSON轉(zhuǎn)成多張表格亥贸,表格之間通過(guò)外鍵連接
表格轉(zhuǎn)JSON
- 表轉(zhuǎn)成多個(gè)獨(dú)立文檔,文檔之間通過(guò)引用關(guān)系聯(lián)系
- 表轉(zhuǎn)成一個(gè)嵌套文檔
Happy learning !!