之前練習過了 進貨單的DFD及ERD ,也練習過了 線上商店的UML ,現在來看看B2B網站的Data Flow Diagram跟線上商店有何差異。
我們在 Data Flow Diagram (DFD) 與 Entity Relationship Diagram (ERD) 實作練習 操作了進貨單的練習,如果使用Bing Chat的協助來做,會有什麼不同呢?
XAMPP是一個把 Apache 網頁伺服器與 PHP 、 Perl 及 MariaDB 集合在一起的安裝包,允許使用者可以在自己的電腦上輕易的建立網頁伺服器。缺點是Apache/PHP/Perl/MariaDB這些的版本未必都是最新版,並且要自行更新會有些微難度。不過,如果對於版本沒有太大要求情況下,使用XAMPP這類整合的套件是比較省事的選擇。 但是在使用時如果你希望可以把XAMPP安裝在USB儲存上,讓他變成可攜式版本,就不能用一般的安裝方式。並且要注意,使用的USB最好是3.0以上,不然在執行上會明顯緩慢。
假如有進貨單格式如上,以往都是人工製作表單,現在老闆要我把這個作業電腦化,我應該怎麼做呢? (仔細檢視上面的進貨單,如果A公司要運送貨物給B公司,對A公司來說是出貨單,對B公司來說才是進貨單。出貨單才會需要運送地址,進貨單只需要供應商編號或是名稱。除非進貨會到不同倉庫,例如B公司有台中倉庫以及台南倉庫,以下分析過程先忽略進貨地址。)
要練習MySQL/MariaDB操作有許多方法,大致整理如下 : (1) 下載 MySQL 或是 MariaDB 。 (2) 下載整合套件,例如 XAMPP 、 EasyPHP 、 WampServer 等。 (3) 使用線上語法編譯服務,例如 OneCompiler 、 W3CSchool 、 Programiz 等。 (4) 使用線上資料庫代管服務,例如 Google Cloud SQL 、 AWS 等。 (5) 使用網站空間服務的資料庫,例如 000webhost 、 infinityFree 等。
我們從" ChatGPT會不會寫MySQL指令? "、以及" Power Up Your MySQL Queries: How ChatGPT Can Help You Retrieve MySQL Data "知道,確實ChatGPT能夠寫MySQL指令,而且ChatGPT可以當成DBA (DataBase Administrator) 助理來協助抓取需要的資料。
上文" 如何在區塊鏈 (Blockchain) 上使用 Remix 部署智能合約 (Smart Contract) ",說明了在乙太坊區塊鏈上以Remix撰寫智能合約,也使用ERC-20發行加密貨幣,但是尚缺乏一個功能,就是以乙太幣購買該加密貨幣。
上文" 區塊鏈 (Blockchain) 在供應鏈 (Supply Chain) 與企業資源規劃 (ERP) 系統扮演什麼角色? "提到區塊鏈的智能合約在企業應用上很重要,這篇就來實作一下在區塊鏈 (Blockchain) 上使用 Remix 部署智能合約 (Smart Contract)吧。
上文談到「 什麼是區塊鏈 (Blockchain)? 可以取代資料庫嗎? 」初步的結論是 : 「區塊鏈不會取代資料庫,但是資料庫技術會與區塊鏈技術融合。」 意思就是未來的企業系統會將區塊鏈特性融合進去,例如使用區塊鏈的供應鏈系統,或是使用區塊鏈的企業資源規劃系統。 從這篇「 應用區塊鏈技術發展智慧物流之效益分析 」可以來看看,為何供應鏈系統需要區塊鏈技術?
區塊鏈 (Blockchain) 是近幾年來很熱門的話題,似乎沒有跟區塊鏈扯上關係就太落伍了。但是也因為太熱門了,所以很多奇怪的說法就出現了,變成為了區塊鏈而區塊鏈。 到底什麼是區塊鏈? 他可以做什麼? 他不是什麼? 區塊鏈是否可以取代資料庫? 我們將仔細的來解析。
現在要來做一個範例 : 歌曲資料庫的新增/修改/刪除/顯示。 首先我們先把登入登出的功能做出來。 預計要有幾個檔案 : login.php 用來顯示登入表單,以及進行登入驗證。 logout.php 用來登出,清除已登入的狀態。 check.inc.php 用來檢查是否為登入狀態。 process.php 當完成登入後的處理作業。
PHP連接MySQL有三種方式 : MySQL、MySQLi、PDO 參考資料 : https://www.w3schools.com/PHP/php_mysql_connect.asp 因為MySQL連接方式在新版7.0已經不支援,所以不建議使用 參考資料 : https://www.php.net/manual/en/function.mysql-connect.php 使用這個函數phpversion(),可以知道你的PHP版本。
(系統開發流程 : 計畫 > 分析 > 設計 > 建置 > 測試整合 > 上線&維護) 現在我們用一個實際的例子來說明系統分析與設計的過程。
需求 : 我們希望開發一個提供學校學生可以在網路上選課的系統。 (1) 首先把需求畫成「使用案例圖 Use Case Diagram」。 使用案例圖的相關資訊,可以參考 : https://www.lucidchart.com/pages/uml-use-case-diagram
(1) 建立ODBC連線 取得ODBC驅動程式並安裝 https://dev.mysql.com/downloads/connector/odbc/ Install MySQL Connector ODBC (2) 建立資料來源 (3) 啟用EXCEL的開發人員 (4) 設定巨集安全性 (5) 透過VBA使用ODBC連線MYSQL 範例一、從MYSQL抓出資料秀在EXCEL上 Sub ShowData() Range("A1:C99").Clear On Error GoTo ErrorHandler Set myCon = CreateObject("ADODB.Connection") myCon.Open "Driver={MySQL ODBC 5.3 UNICODE Driver};Server= server-ip ;Database= dbname ;User= root ;Password= yourpassword ;Option=3;" A = CStr(Cells(1, …
I 、基本觀念 問題:什麼是 Lock (鎖定) ? 答案:Lock 的主要目的是避免資料發生錯誤,把不應該進行動作的指令排除在外,並讓應該進行動作的指令能夠順利完成。 問題:什麼是Table Lock (表單鎖定) ? 什麼是Row Lock (紀錄鎖定)? 答案:表單鎖定就是將整個資料表鎖定,讓其他連線無法讀取及異動,直到資料處理完畢為止。紀錄鎖定就是將指定的紀錄鎖定,讓其他連線無法讀取及異動,直到資料處理完畢為止。 問題:InnoDB與MyISAM的鎖定有何差別? 答案:MyISAM 沒有交易功能 (Transaction),若要避免多個連線交互執行 SQL 指令,造成資料錯亂,只好使用鎖定資料表 (Table Lock) 的方式,InnoDB則可以使用Table Lock 與Row Lock。 問題:MySQL不同版本的鎖定有何差別? 答案:MySQL不同版本的鎖定原理一樣,只是語法上有些差異。 例如 : MySQL 5.5 使用 Select ... lock in share mode; MySQL 5.5 使用 Select ... for update; MySQL 8.0 還可以使用 Select ... for share…
需求~建立一個資料庫系統,紀錄公司的產品資料,並且記錄客戶的訂單、進貨、出貨、收款。 需要產出以下內容以及回答問題~ (因為答案不是只有一種,資料表結構不同,想法就可能不同) (1) 這個系統的ERD (2) 這個系統的資料表單結構(Schema) (3) 老闆想知道在某個時間區間內,哪個客戶購買金額最大?最少? 思考 : 從這個需求知道,需要一個客戶資料表(customer),以及紀錄訂購的資料表,因為order是保留字,所以我們用order_main當訂購的表頭檔,用order_body當訂購的表身檔。 為何紀錄訂購資料需要訂購的表頭檔跟訂購的表身檔呢? 要知道某個時間區間內,哪個客戶購買金額最大?最少? 需要客戶資料表(customer)、order_main 與 order_body。 某個時間區間內,哪個客戶購買金額最大?最少? --> 從客戶資料表+訂購的表頭檔+訂購的表身檔,找到加總訂購金額最大( 最少 )的客戶名稱,條件是訂購資料在特定時間區間內。 (4) 老闆想知道目前總共還有多少應收款? 應收款最多的是哪個客戶? 思考 : 從這個需求知道,訂購的價錢需要紀錄已付或是未付,這個可以用一個欄位來表示,你可以…
在MySQL中,把Procedure和Function統稱為Routine,我們會把常用的程序用Stored Procedure或是Stored Function來表示,需要的時候就可以重複呼叫。 Stored Procedure(預儲程序):把一連串的SQL程序步驟儲存起來,最後透過 『call 預儲程序名稱;』來呼叫。 Stored Function(預儲函數):或稱為使用者定義函數,跟預儲程序很像,不過最後會傳回值。呼叫方式不是 call,而是Select,例如:『select 預儲函數名稱(引數值);』或『select 預儲函數名稱();』。 MySQL 正式支援觸發器(trigger)是在 MySQL 5.0.2 的版本之後。觸發器是註冊在資料庫表格上的程式。所以在事件發生(對資料列做新增/修改/刪除)時,資料庫會依照觸發條件(事件前/事件後)幫你執行預先儲存好的程式。 現在來看看一個實際需求的案例 ~ 資料表格式如下 Student(sid, idno, sname, did, syear, sclass) OpenCourse(oid, cid, tid, yearlimit, roomno, tot) Schedule(oid, ti…
MySQL使用者權限資訊用user、db、host、tables_priv和columns_priv表被儲存在mysql資料庫中。 關於使用者權限的相關指令,說明如下 (1)使用 root 進入 MySQL mysql> mysql -u root -p (2)遠端登入 mysql> mysql -u root -h remote_host_ip -p remote_host_ip 指你要登入的遠端MySQL (3)修改使用者密碼 mysql> SET PASSWORD FOR '目標使用者'@'主機' = PASSWORD(' 密碼 '); mysql> flush privileges; (4)建立使用者,並給予權限 grant usage on *.* to 'username'@'localhost' identified by ' yourpassword ' with grant option; grant all privileges on *.* to 'username'@&…