[討論] 想請問關聯式資料庫一點小問題

看板Database (資料庫)作者 (povertytrap)時間8年前 (2016/03/03 23:06), 8年前編輯推噓8(8038)
留言46則, 4人參與, 最新討論串1/1
各位前輩 想請問一下 我在看資料庫的書時這三點覺得很怪 第一個問題 關聯表還具備四個性質: 其中這點關聯表中不含重複的"值組" 可是書上的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://www.ptt.cc/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

03/04 00:34, , 1F
問題一. 所謂值組是說一筆資料.不能有兩筆以上資料
03/04 00:34, 1F

03/04 00:34, , 2F
的所有欄位都相同.在DB裡PK不能重複,FK參考到其他ta
03/04 00:34, 2F

03/04 00:34, , 3F
ble的PK,不同筆資料可能參考到相同PK,所以可以重複.
03/04 00:34, 3F

03/04 00:41, , 4F
問題二. 所謂FK剛剛說過是參考到其他table的PK,而PK
03/04 00:41, 4F

03/04 00:41, , 5F
可以不只一個欄位組成一個"複合PK",因此,所謂全空
03/04 00:41, 5F

03/04 00:41, , 6F
或全非空是指一筆資料的FK欄位都是空或非空,不能有
03/04 00:41, 6F

03/04 00:41, , 7F
一些欄位有值,另以些則無.
03/04 00:41, 7F

03/04 00:47, , 8F
問題二,對阿那FK那個插入範例沒填新資料的FK阿
03/04 00:47, 8F

03/04 00:48, , 9F
因此新資料的FK部門代號不就null,怎可新增成功
03/04 00:48, 9F

03/04 00:59, , 10F
問題三,只看懂前面問的內容,後面看不懂@@ 弱個體是
03/04 00:59, 10F

03/04 00:59, , 11F
依附在其他非弱個體,而部份鍵是用來辨別在同一個體
03/04 00:59, 11F

03/04 00:59, , 12F
下的弱個體,但在整個資料庫裡無法透過 姓名都不重
03/04 00:59, 12F

03/04 00:59, , 13F
覆,因此眷屬姓名為部份鍵,所以可以在某個員工底下透
03/04 00:59, 13F

03/04 00:59, , 14F
過姓名來識別某個眷屬,但是換成另一位員工的眷屬姓
03/04 00:59, 14F

03/04 00:59, , 15F
名就可能和剛剛的員工眷屬姓名相同.因此,可以知道無
03/04 00:59, 15F

03/04 00:59, , 16F
法在整個資料庫裡透過員工眷屬姓名找到是不是 部份
03/04 00:59, 16F

03/04 01:00, , 17F
鍵識別該弱個體,只能透過(所依附個體的PK+弱個體部
03/04 01:00, 17F

03/04 01:00, , 18F
份鍵)在整個資料庫裡識別.例如: 眷屬依附在員工個
03/04 01:00, 18F

03/04 01:00, , 19F
體,因此眷屬為弱個體.現在假設眷屬下的你要找的人,
03/04 01:00, 19F

03/04 01:00, , 20F
可能找到多個相同姓名.如果員工個體有員工id可以識
03/04 01:00, 20F

03/04 01:00, , 21F
別不同員工,可以透過員工id+員工眷屬姓名就可以唯一
03/04 01:00, 21F

03/04 01:00, , 22F
找到一個人
03/04 01:00, 22F

03/04 09:41, , 23F
後面坦白講看不懂 應該是跟 Unique 有相關連...
03/04 09:41, 23F

03/04 09:42, , 24F
除非你insert 的column 不允許null 不然insert的問題?
03/04 09:42, 24F

03/04 11:32, , 25F
謝謝f大大,關於問題二插入(a5、may)這筆資料,
03/04 11:32, 25F

03/04 11:34, , 26F
部門代號沒給值,而部門代號屬於fk,這怎可插入成功?
03/04 11:34, 26F

03/04 11:35, , 27F
明明外鍵要都空或非空阿,這有就有值跟有空阿
03/04 11:35, 27F
※ 編輯: povertytrap (163.25.119.4), 03/04/2016 11:35:43

03/04 11:36, , 28F
第三問題是說ER圖部分鍵(弱個體屬性)下面繪畫虛線
03/04 11:36, 28F

03/04 11:37, , 29F
如果弱個體有很多屬性,那主鍵屬性要化實底線+虛線嗎
03/04 11:37, 29F

03/04 11:45, , 30F
FK如果他要空 那就可以插入了不是嘛?
03/04 11:45, 30F

03/04 11:46, , 31F
第三個看起來是不是有點像 訂單 跟訂單明細 然後訂單明細
03/04 11:46, 31F

03/04 11:46, , 32F
裡面有一些東西的確是沒有特別關連這樣
03/04 11:46, 32F

03/04 11:46, , 33F
根據參考完整性限制藥都空或都非空阿
03/04 11:46, 33F

03/04 11:57, , 34F
問題二我剛剛建完表條件都照抄的確是不行
03/04 11:57, 34F

03/04 12:13, , 35F
奇怪書上怎會寫可以= =""
03/04 12:13, 35F

03/04 12:14, , 36F
所以確定這是錯誤就是了?
03/04 12:14, 36F

03/04 13:15, , 37F
恩我照你說的 去拉表 insert 就跳出錯誤訊息了
03/04 13:15, 37F

03/04 13:16, , 38F
我都設沒有允許NULL
03/04 13:16, 38F

03/04 13:25, , 39F
好吧 謝謝N大跟F大
03/04 13:25, 39F

03/04 15:00, , 40F
我找到實際例子了,聯合大學陳士杰老師這份投影片
03/04 15:00, 40F

03/04 15:02, , 41F
http://goo.gl/Ej7LIg 投影片第29頁,依樣少FK
03/04 15:02, 41F

03/04 15:02, , 42F
插入 (‘A233’, ‘陳土木’, ‘0987654’)插入允許
03/04 15:02, 42F

03/04 15:03, , 43F
怎麼都跟他們寫得不一樣........
03/04 15:03, 43F
※ 編輯: povertytrap (163.25.119.5), 03/04/2016 15:10:20

03/04 15:21, , 44F
他29頁的 EX2 跟四我想是他誤植了應該顛倒就解了
03/04 15:21, 44F

03/04 18:33, , 45F
你文章說的例子需要有個前題,就是預設值為NULL,這
03/04 18:33, 45F

03/04 18:33, , 46F
樣不填就可以插入了
03/04 18:33, 46F
文章代碼(AID): #1Ms5Bdcm (Database)
文章代碼(AID): #1Ms5Bdcm (Database)