Re: [课业] 103资讯高考数据库第二题

楼主: kaocoming (蓝蓝的天~白白的云~)   2014-09-22 22:43:03
※ 引述《ARCHERDEVIL (开弓)》之铭言:
: 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 共八组。
这边我没那么麻烦耶
因为除了ID以外都可取可不取两种可能
而所有attribute有3个(不含ID),故总排列组合为 2^3 = 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
这边就是venn diagram的概念
把有A这个atrrtibute的集合 + 有B这个attribute的集合 - 有AB atrribute集合就好
也就是 2^3 + 2^3 - 2^2 = 8 + 8 -4 =12
不过这边基本上都在考排列组合, 跟DB好像没什么关系 = =
以下恕删 ===================
作者: ARCHERDEVIL (开弓)   2014-09-22 23:22:00
程式语言第二题也在考排列组合... 今年真的很妙
作者: after1 (aaaaaaaaaaaa)   2014-09-23 17:12:00
我也是用排列组合 .但这整大题我只拿到8分 WHY~
作者: ARCHERDEVIL (开弓)   2014-09-23 21:45:00
我的答案有包含为什么这样排列组合的原因欧阿我是本来就废话很多...所以才说那题小气。当时写的时候真的是哭笑不得...
楼主: kaocoming (蓝蓝的天~白白的云~)   2014-09-24 00:01:00
是阿 不过不写又不行 就只好这样囉 = =

Links booklink

Contact Us: admin [ a t ] ucptt.com