台灣最大程式設計社群網站
線上人數
1689
 
會員總數:246502
討論主題:190009
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 網頁資料庫,是否需要預先就做關聯?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
網頁資料庫,是否需要預先就做關聯?
價值 : 20 QP  點閱數:794 回應數:4
樓主

冰晶雪花
初學者
70 46
320 52
發送站內信

捐贈 VP 給 冰晶雪花
各位前輩好
小弟我一直有一個多年未解的迷思,想請問各位大大。
我最早接觸資料庫是Access,當然那時所學就是資料表、查詢、關聯之類的
關聯又分為一對一關聯、一對多關聯、多對多關聯之類的

那在圖形化的介面,一定要設一個主key,剩下再依自己需要自設索引。

但是,如果今天是用在Web的介面,資料庫的部份,如果預先做關聯
會不會很,或是,建議嗎?


假設我有數個Table用來存資料

Table A的資料如下
Customer ID (客戶編號-PK)
Name (客戶姓名)
Birthday (客戶生日)
Phone (客戶電話)
Email (客戶信箱)


那還有一個Table B用來做訂單
Order_ID(訂單編號-PK)
Customer ID (客戶編號-FK)
Total Price

還有一個Table C用來做詳細資料-考量有1張主訂單對應不同種類商品,屬1對多
OrderDetail_ID(訂單詳細資料_PK)
Order_ID(主訂單編號-FK)
ProductName(產品名稱)
QTY(數量)
Price(單價)
Summary(小計)

那在類似上述的結構之下,實務上會在資料庫設計時直接設好關聯嗎?



搜尋相關Tags的文章: [ 資料庫 ] , [ 網站 ] , [ 關聯 ] ,
本篇文章發表於2021-06-02 02:11
1樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
個人的想法是這樣
Access只是把要做的事情視覺化的讓你做設定
但是本質上

建資料表的時候,設定Primary Key, Foreign key

查詢時需要
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN

以上無論是使用Access, MSSQL, MySQL, ...
都是需要的

^_^
本篇文章回覆於2021-06-25 09:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

冰晶雪花
捐贈 VP 給 冰晶雪花 檢舉此回應
小喵大,請問您的意思是,在寫入record的時候,是兩個table都要寫value進去嗎?
本篇文章回覆於2021-06-25 09:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
在寫入record的時候,是兩個table都要寫value進去嗎?


是~也不是~

寫入的時候兩個Table都要寫入
而且,寫入兩個Table的過程,要包在一個交易(Transaction)裡面

交易(Transaction)就是
包在一個交易裡面的異動,是【全有或全無】
也就是包在一個交易裡面,不管維護了幾個資料表
要嘛全部成功完成交易
只要失敗其中一個,全部的資料異動全部倒回去(Rollback)到異動前未異動的狀態

^_^


本篇文章回覆於2021-06-25 14:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

冰晶雪花
捐贈 VP 給 冰晶雪花 檢舉此回應
那再請問貓大一個問題
也許小弟的認知是比較有點還困在access的框架中

因為在關聯性裡面有一個強迫性關聯, 修改和刪除都是一體的

例如主要訂單刪除了,那與之Bind的明細表,應該是要一起刪除的。
如果Create一張明細表,一定要有與之對應的主表。在填寫時會在主表自動Create一個Record

不知道其他的資料庫會不會也是這樣的模式?

但看起來比較保險的確就是包在Transaction裡面,以手動的方式寫入
本篇文章回覆於2021-06-25 14:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.