需求~要列出符合【某個條件】的【某項資料】,應該如何寫出SQL指令呢? 第一步 : 找齊資料表。 【某項資料】是在哪個資料表? 以及【某個條件】中的判斷條件是在哪個資料表? 所以這個步驟 ,就可以把資料表都找齊了。 第二步 : 篩選出來【正確的資料表】。 但是許多情況,【某項資料】會存在許多資料表中,這個時候就要判斷,哪個資料表才是正確的。 方法就是把第一步找到的資料表,畫出關聯性,【某項資料】一定會存在具有關聯性的資料表中。所以就可以把不在關聯的資料表刪除。 第三步 : 套用再調整。 套用 SELECT 【某項資料】 FROM 【正確的資料表】 WHERE 【某個條件】AND 主鍵外鍵的關聯 其他部分 (如GROUP BY、HAVING、ORDER BY等等) 調整 看看那些欄位需要冠上 ~ 資料表.資料欄,例如 學生資料表.學生姓名 例如~ 要列出開課編號為o0001的「開課編號」、「學生姓名」。 由第一步,相關的欄位是 「 開課編號 」 、「學生姓名」。 「學生姓名」存在於學生資料庫, 「 開課編號 」存在於 選課資料表、 開課資料表、 時間資料表。 由第二 步,學生資料庫與 選課資料表,透過 學生編…
資料流圖DFD是描述系統中資料流程的一種圖形工具,它標誌了一個系統的邏輯輸入和邏輯輸出,以及把邏輯輸入轉換邏輯輸出所需的加工處理。 資料流圖是從資料的角度來描述一個系統,他只描述WHAT而不描述HOW。所以資料流圖並不會看到詳細的程序流程,只看到程序與資料流的關係。 如果系統的規模較大,為了降低系統的複雜性,一般採取「逐層分解」的方法,繪製分層的DFD。 DFD的表示法 : DFD的範例 : 訂餐系統 Level 0 DFD (通常不包含 data store) Level 1 DFD (拆解Level 0 的程序) DFD 與 ERD 有何關係呢? 可以透過DFD的實體(Entity)與Data Store,知道應該包含那些資料。 在DFD之後,如果要更清楚的描繪整個系統,就可以使用 UML Diagram 。
(1) 把每個[實體]都做成一個[表單],實體的[屬性]就是[欄位] , 並訂下主鍵(PK)。 例如 : Person (person_id, Name, Lastname, Email, Phone) (2) 當存在多值屬性時(如Phone),該多值屬性也變成一個表格。 例如 : Person (person_id, Name, Lastname, Email) 以及 Phone (person_id, phone_id, phone_number) (3) 當出現弱屬性時,該弱屬性可以由其他屬性得知,則該弱屬性不必成為一個欄位。 例如 : age可以由生日計算得知,age則不必成為一個欄位。 (4) 當實體A與實體B為 1:1 時,A表單加上FK連到B表單PK,或是B表單加上FK連到A表單 PK。 A(aid,a1,a2 …, bid) B(bid,b1,b2 …) 或是 A(aid,a1,a2 …) B(bid,b1,b2 …, aid) 以上A表單的bid為FK連接到B表單的bid (PK) 以上B表單的aid為FK連接到A表單的aid (PK) 例如 顧客 ~ 購物車關聯是1:1 (一個購物車對應一個顧客,一個顧客只能有一個購物車…
(1)資料庫需求收集與分析 Requirement Collection and Analysis 使用的工具就是DFD (Data Flow Diagram 資料流程圖),DFD是描述系統中資料流程的一種圖形工具,它標誌了一個系統的邏輯輸入和邏輯輸出,以及把邏輯輸入轉換邏輯輸出所需的加工處理。 值得注意的是,資料流圖不是傳統的流程圖或框圖,資料流也不是控制流。 參考 : https://www.visual-paradigm.com/tutorials/data-flow-diagram-dfd.jsp http://web.ydu.edu.tw/~alan9956/docu3/0992sa/sa04_dfd.pdf (2)資料庫概念設計 Conceptual Database Design 概念塑模(Conceptual Data Model)使用的工具,就是實體關係模型(Entity Relationship Model),最後會產生實體關係圖(Entity Relationship Diagram)。 參考 : https://www.mysql.tw/2013/03/entity-relationship-model.html http…
假設出貨單表單如下,你應該如何設計資料表,來表示這個表單? 正規化後,資料結構應該如何呢? 客戶資料表 customer( cusno , cusname, cuszipcode, cusaddress, custel, cusfax, cuscontact) 職員資料表 employee( empno , empname, deptno, emptitle) 公司部門表 department( deptno , deptname) 產品資料表 product( prodno , prodname, prodprice, prodamount) 訂單主檔資料表 myorder( ordno , cusno, orddate, ordtotal, salesno, assistno) 訂單品項資料表 myorderitem( ordno, serial , prodno, prodqty, prodprice) 以下的需求應該如何達成呢? (1)某個客戶在某個日期,訂購那些商品? SELECT p.prodno, p.prodname FROM product p, myorder m, myorderitem mi…
Data Modeling (資料塑模) 就是一種程序,用來定義跟分析資料需求,來支援某個商業程序。 下面就是維基百科所描述的資料塑模方法: 但是以上的方法,先經過邏輯塑模(Logical Data Model),再經過概念塑模(Conceptual Data Model),最後進行實體塑模(Physical Data Model)。 我們建議資料塑模,使用下圖的方式: 也就是先經過概念塑模(Conceptual Data Model),然後進行邏輯塑模(Logical Data Model),最後進行實體塑模(Physical Data Model)。 概念塑模(Conceptual Data Model)使用的工具,就是實體關係模型(Entity Relationship Model),最後會產生實體關係圖(Entity Relationship Diagram)。 邏輯塑模(Logical Data Model)使用的工具,就是關聯模型(Relational Model),最後會產生資料表的定義關聯綱目(schema)。 實體塑模(Physical Data Model)使用的工具,就是資料庫管理系統,或是 SQL語法,最後會產生真…
如下的資料,我們應該如何進行正規化呢? 如果無正規化,對於處理上有何問題呢? 資料表1: 問題在於欄位並非atomic(基元值),學號、學生姓名、成績欄位中有多個數值,所以並不符合1NF的條件。改成資料表3,所有記錄中的項目都是基元值,即無重覆資料項目,就可符合1NF的條件。 資料表2: 問題在於無法決定學生1、學生2、學生3 ... 到底需要多少個欄位,成績亦同,所以這個資料表無法決定相依關係。 資料表3: 問題在於不符合2NF的條件,也就是每一個非鍵屬性無法完全相依於主鍵。 所以必須拆開成幾個表單~ 如資料表4,以符合2NF的條件。 課程資料表 ( 課程編號 , 課程名稱, 教師編號, 教師姓名) , 學生資料表 ( 學號 , 學生姓名) , 成績資料表 ( 課程編號 , 學號 , 成績)。 資料表4: 但是上面的課程資料表,尚不符合3NF,所以再拆成如下資料表5。 資料表5: 所以就得到 .... 課程資料表 ( 課程編號 , 課程名稱, 教師編號) , 老師資料表 ( 教師編號 , 教師姓名) , 學生資料表 ( 學號 , 學生姓名) , 成績資料表 ( 課程編號, 學號 , …