作者povertytrap (povertytrap)
看板Database
标题[讨论] 想请问关联式资料库一点小问题
时间Thu Mar 3 23:06:13 2016
各位前辈 想请问一下
我在看资料库的书时这三点觉得很怪
第一个问题
关联表还具备四个性质:
其中这点关联表中不含重复的"值组"
可是书上的table明明值组都有重复的阿(非主键)
我google网路上一些教学也是有上述那点 阿表里面还是重复阿
例如这网页的表格中
http://faculty.stust.edu.tw/~jehuang/oracle/ch2/2-2.htm
Mgr跟Deptno里面职组都有重复阿
请问是我理解错误吗?
第二个问题
根据参考完成性、外键必须全部空值或非空
今天书上举例插入动作
表1
员工ID(这是主键) 姓名 部门代号(这是外键)
a1 ian 001
a2 ian 002
a3 teddy 003
a4 jahn 001
表2
部门代号(主键) 部门名称
001 业务部
002 资讯部
003 研发部
今天表1插入新员工资料(a5、may) 插入成功
这样不对啊根据参考完成性、外键必须全部空值或非空
这笔资料没给部门代号怎可以插入
第三个问题我不确定是否可以问在这
弱个体看定义是 : 弱个体就是本身没有任何键值属性的个体
但有部分键用来描述弱个体的属性 (我手上的书只有文字描述没话弱个体)
但这段话很怪
没有任何键值属性 却又有部分键用来描述属性?
而根据我google到的图
在E-R Model中,唯一可辨识弱个体的属性称为部份键
(Partial Key),其图示为在该属性名称下方加上虚底线 (实
务上也可用实底线),假如部分键有很多个,那我要对主键+实底线吗?
因为我非本科生,没学过资料库只好自学
恳请各位大大帮解惑
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 163.25.119.4
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1457017575.A.9B0.html
※ 编辑: povertytrap (163.25.119.4), 03/03/2016 23:07:16
※ 编辑: povertytrap (163.25.119.4), 03/03/2016 23:17:41
※ 编辑: povertytrap (163.25.119.4), 03/03/2016 23:24:42
1F:推 fightforlive: 问题一. 所谓值组是说一笔资料.不能有两笔以上资料 03/04 00:34
2F:→ fightforlive: 的所有栏位都相同.在DB里PK不能重复,FK参考到其他ta 03/04 00:34
3F:→ fightforlive: ble的PK,不同笔资料可能参考到相同PK,所以可以重复. 03/04 00:34
4F:推 fightforlive: 问题二. 所谓FK刚刚说过是参考到其他table的PK,而PK 03/04 00:41
5F:→ fightforlive: 可以不只一个栏位组成一个"复合PK",因此,所谓全空 03/04 00:41
6F:→ fightforlive: 或全非空是指一笔资料的FK栏位都是空或非空,不能有 03/04 00:41
7F:→ fightforlive: 一些栏位有值,另以些则无. 03/04 00:41
8F:→ povertytrap: 问题二,对阿那FK那个插入范例没填新资料的FK阿 03/04 00:47
9F:→ povertytrap: 因此新资料的FK部门代号不就null,怎可新增成功 03/04 00:48
10F:推 fightforlive: 问题三,只看懂前面问的内容,後面看不懂@@ 弱个体是 03/04 00:59
11F:→ fightforlive: 依附在其他非弱个体,而部份键是用来辨别在同一个体 03/04 00:59
12F:→ fightforlive: 下的弱个体,但在整个资料库里无法透过 姓名都不重 03/04 00:59
13F:→ fightforlive: 覆,因此眷属姓名为部份键,所以可以在某个员工底下透 03/04 00:59
14F:→ fightforlive: 过姓名来识别某个眷属,但是换成另一位员工的眷属姓 03/04 00:59
15F:→ fightforlive: 名就可能和刚刚的员工眷属姓名相同.因此,可以知道无 03/04 00:59
16F:→ fightforlive: 法在整个资料库里透过员工眷属姓名找到是不是 部份 03/04 00:59
17F:→ fightforlive: 键识别该弱个体,只能透过(所依附个体的PK+弱个体部 03/04 01:00
18F:→ fightforlive: 份键)在整个资料库里识别.例如: 眷属依附在员工个 03/04 01:00
19F:→ fightforlive: 体,因此眷属为弱个体.现在假设眷属下的你要找的人, 03/04 01:00
20F:→ fightforlive: 可能找到多个相同姓名.如果员工个体有员工id可以识 03/04 01:00
21F:→ fightforlive: 别不同员工,可以透过员工id+员工眷属姓名就可以唯一 03/04 01:00
22F:→ fightforlive: 找到一个人 03/04 01:00
23F:推 shadow0828: 後面坦白讲看不懂 应该是跟 Unique 有相关连... 03/04 09:41
24F:→ shadow0828: 除非你insert 的column 不允许null 不然insert的问题? 03/04 09:42
25F:→ povertytrap: 谢谢f大大,关於问题二插入(a5、may)这笔资料, 03/04 11:32
26F:→ povertytrap: 部门代号没给值,而部门代号属於fk,这怎可插入成功? 03/04 11:34
27F:→ povertytrap: 明明外键要都空或非空阿,这有就有值跟有空阿 03/04 11:35
※ 编辑: povertytrap (163.25.119.4), 03/04/2016 11:35:43
28F:→ povertytrap: 第三问题是说ER图部分键(弱个体属性)下面绘画虚线 03/04 11:36
29F:→ povertytrap: 如果弱个体有很多属性,那主键属性要化实底线+虚线吗 03/04 11:37
30F:推 neo5277: FK如果他要空 那就可以插入了不是嘛? 03/04 11:45
31F:→ neo5277: 第三个看起来是不是有点像 订单 跟订单明细 然後订单明细 03/04 11:46
32F:→ neo5277: 里面有一些东西的确是没有特别关连这样 03/04 11:46
33F:→ povertytrap: 根据参考完整性限制药都空或都非空阿 03/04 11:46
34F:推 neo5277: 问题二我刚刚建完表条件都照抄的确是不行 03/04 11:57
35F:→ povertytrap: 奇怪书上怎会写可以= ="" 03/04 12:13
36F:→ povertytrap: 所以确定这是错误就是了? 03/04 12:14
37F:→ neo5277: 恩我照你说的 去拉表 insert 就跳出错误讯息了 03/04 13:15
38F:→ neo5277: 我都设没有允许NULL 03/04 13:16
39F:→ povertytrap: 好吧 谢谢N大跟F大 03/04 13:25
40F:→ povertytrap: 我找到实际例子了,联合大学陈士杰老师这份投影片 03/04 15:00
42F:→ povertytrap: 插入 (‘A233’, ‘陈土木’, ‘0987654’)插入允许 03/04 15:02
43F:→ povertytrap: 怎麽都跟他们写得不一样........ 03/04 15:03
※ 编辑: povertytrap (163.25.119.5), 03/04/2016 15:10:20
44F:推 neo5277: 他29页的 EX2 跟四我想是他误植了应该颠倒就解了 03/04 15:21
45F:推 fightforlive: 你文章说的例子需要有个前题,就是预设值为NULL,这 03/04 18:33
46F:→ fightforlive: 样不填就可以插入了 03/04 18:33