合併理論

合併理論
目的:透過join(合併)過程得到一個虛擬關聯來達到查詢上的方便

join有以下幾種
cross join(交叉合併)
也稱cartesian product(卡氏積)或cross product(交叉乘積)
類似乘法的概念
inner join(內部合併)/condition join(條件合併)
使用交集的概念,只會從兩table中取出相同的部份
outer join(外部合併)
可在分為以下
 left outer join,以第一個table為準
 right outer join,以第二個table為準
 full outer join:兩table的聯集
self-join(自我合併)

……………………………………………………

以這2資料表為例
(src_ip , dst_port , sig_id)
192.168.1.5 , 80 , 0
192.168.1.1 , 80 , 1
192.168.1.2 , 443 , 2
(sig_id , sig_name)

1 , sql_injection
2 , ddos
3 , backdoor
4 , shellcode


inner join
共2筆,結果如下
(src_ip , dst_port , sig_id , sig_name)
192.168.1.1 , 80 , 1 , sql_injection
192.168.1.2 , 443 , 2 , ddos

left outer join
共2(inner)+1(left)筆,結果如下
(src_ip , dst_port , sig_id , sig_name)
192.168.1.5 , 80 , 0 , null
192.168.1.1 , 80 , 1 , sql_injection
192.168.1.2 , 443 , 2 , ddos

right outer join
共2(inner)+2(right)筆,結果如下
(src_ip , dst_port , sig_id , sig_name)
192.168.1.1 , 80 , 1 , sql_injection
192.168.1.2 , 443 , 2 , ddos
null , null , 3 , backdoor
null , null , 4 , shellcode

full join
共2(inner)+1(left)+2(right)筆,結果如下
(src_ip , dst_port , sig_id , sig_name)
192.168.1.5 , 80 , 0 , null
192.168.1.1 , 80 , 1 , sql_injection
192.168.1.2 , 443 , 2 , ddos
null , null , 3 , backdoor
null , null , 4 , shellcode