關聯式與非關聯式資料庫

以前聽的很亂的東西。

關聯式

關聯式的核心理念:不要把不相干的資料放在一起

處理關聯式資料庫的程式語言:SQL(Structure Query Language)

最有名的代表:MySQL

舉例來說,我有一個用來儲存期中考分數的 table:

table-01

用看的就有點奇怪吧?為什麼要把姓名跟地址也放在這個 table 裡面?

而且假設之後又有一個新的 table 是儲存期末考分數,不就又要在打一次姓名跟地址?

所以與其這樣子做,倒不如開一個新的 table 專門用來儲存「學生資料」:

table-02

那要怎麼把「期中考」跟「學生資料」關聯在一起?注意到了嗎,這兩個 table 都有「學號」,所以用學號就可以把它們關聯起來。

這就是關聯式資料庫的核心理念:把不重要的分開來,在透過某個欄位來把不同的資料庫給關聯起來。

非關連式

統稱:NOSQL(Not Only SQL)

最有名的代表:MongoDB

大概是個有點像 JSON 的東西:

1
2
3
4
5
6
{
score: [1, 2, 3],
student: {
name: 'PeaNu',
}
}

好處是如果今天想新增欄位可以直接加進去:

1
2
3
4
5
6
7
8
9
{
score: [1, 2, 3],
student: {
name: 'PeaNu',
},
address: {
'northern': 'Taipie'
}
}

如果是關聯式資料庫就得重新調整「Schema(結構)」,會比較麻煩一點。

什麼是 Schema(結構) 為什麼要用資料庫?
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×