[課業] 103資訊高考資料庫第二題滿分解答

作者: ARCHERDEVIL (開弓)   2014-09-22 22:27:19
AS TITLE
因為今天有人寄信問我說我資料庫第二題的超鍵數量怎麼回答
我想說我寫很多
乾脆複製過來這邊,拋磚引玉,說不定會有更好的發想。
我的寫法大致上如下
==========
題目節錄
表格中有關編號(欄位名稱字尾有‘_ID’)之欄位均為唯一值(unique)、單位電話(
D_TEL)為唯一值且不能為空值(null)、聯絡電話(E_TEL)可能為空值或重覆
所以如果以第一個表格
OBJECT [物資品項]
O_ID O_NAME TYPE O_NUM
物資編號 物資名稱 規格 目前數量
以此為例
==========
只有ID是候選鍵
所以包含id 的所有屬性組合,都可以是超鍵
因此id 本身,c3取0
id + 任一非鍵屬性 c3取1
id + 任二非鍵屬性 c3取2
id + 任三非鍵屬性 c3取3
所以是1+3+3+1=8 共八組。
==========
然後寫題目太累所以我用 A B C D 舉例就好
==========
假設有A B C D 四個屬性,假設A B 分別都可以是候選鍵
那就會有重複問題
所以我會這樣寫
候選鍵A本身是C3取0
A+任一屬性 C3取1
A+任二屬性 C3取2
A+任三屬性 C3取3
B+任一屬性 C3取1
B+任二屬性 C3取2
B+任三屬性 C3取3
然後,因為候選鍵加上屬性的時候會產生重複
當候選鍵是加上任意一屬性的時候,會產生一個重複
候選鍵加入兩個任意屬性的時候會產生兩個重複
所以可以推論出,重複狀況會是非候選鍵以外的屬性產生的排列
當總共有四個屬性,其中兩個分別可以成為候選鍵的時候
非鍵值屬性有兩個
所以要減掉C2取0 跟C2取1 跟C2取2
C2取0是因為
如果你A加上任一屬性會產生一個超鍵叫做AB
然後當你取B加上任一,會產生一個超鍵叫做BA
這時候AB兩個會產生一個重複,而這個重複沒有非鍵屬性存在
所以非鍵屬性有兩個,但都不取,就變成C2取0
C2取1以此類推
當超鍵組合是三個屬性時不論以A為主或者以B為主
重複的時候一定是同時有AB存在的時候產生重複
此時AB佔去超鍵組合的兩個屬性空間,剩下一個是非鍵屬性
而總共從兩個非鍵屬性挑一個放進去 因此C2取1
最後,C2取2也一樣
當單一屬性候選鍵與其他任三屬性形成超鍵組合的時候
只要有AB同時存在就會產生重複
然後非鍵值屬性有兩個,全部都要填入,所以是C2取2
因此答案就會變成
(1+3+3+1)*2-C2取0-C2取1-C2取2=16-4=12
當然我寫答案不會寫這麼多
我只會大略描述一下為什麼這樣取直,然後直接C幾取幾的公式給他
然後直接列答案,就這樣結束。
他那個小題每個超鍵數量答對才給你一分,太小氣
所以我也寫得很小氣就是了。
以上是超鍵的詳解範例
我覺得比較靈活跟機車的只有這個
因為他分數很少,而且不用數學公式我猜應該沒辦法全拿
但我不是很確定
如果有人用不同寫法然後也全拿得,也許可以分享一下...
不過這樣寫我覺得比羅列所有可能性更快,需求空間更小,同時更直接簡單明瞭
所以我就這樣寫上去了。
以上。
==========
後面補個附註
因為我們的考科很常用排列
比如說找超鍵組合
二元樹有n個元素時有幾種組合可能
有n個括弧的算式有幾種組合
有n個元素的堆疊有幾種可能等等
都會用到排列公式
所以可以背一下巴斯卡三角
1
1 2 1 =4
1 3 3 1 =8
1 4 6 4 1 =16
1 5 10 10 5 1 =32
1 6 15 20 15 6 1 =64
以此類推
各位可以找一下規則
然後每一個的總和都是2的冪次方...
背起來就不用去算什麼c幾取幾
我自己是有背
所以我寫很快,完全沒有計算過程...三角形列出來答案就出來..
作者: kaocoming (藍藍的天~白白的雲~)   2014-09-22 22:45:00
你後面可以推廣到生成函數 基本上是離散數學的範圍了
作者: ARCHERDEVIL (開弓)   2014-09-22 23:20:00
是說我們的考科幾乎都離不開離散數學就是了...
作者: kaocoming (藍藍的天~白白的雲~)   2014-09-22 23:44:00
其實就一點點而已啦 XDD 不懂大概也不影響大局的程度
作者: ARCHERDEVIL (開弓)   2014-09-22 23:50:00
大概是不會到松柏分佈或者二項式分佈的程度不過圖論什麼的還是要有點基礎會比較好我覺得XDD
作者: panda555 (我是胖達不是胖呆喲^ ^)   2014-09-23 14:38:00
呵呵 圖論一定要會的 還好黃子嘉教的好xd

Links booklink

Contact Us: admin [ a t ] ucptt.com