iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
自我挑戰組

菜鳥工程師的奇幻旅程系列 第 9

Day 9 - 拯救落後的專案能撐一天是一天(資料庫與網站上線篇)

產生前端畫面、規劃有需要呼叫到後端的功能、修改後端接收數據後的處理邏輯、回傳到前端接收結果後的畫面呈現....,一條龍做下來的感覺就像是棒球場上的工具人。

/images/emoticon/emoticon04.gif

資料的終點站

當今天做一個會員系統、產品管理系統、代辦清單系統等等的資料都需要有一個存取的地方,方便下一次的登入或者查看紀錄因此資料庫就是不二人選,而資料庫常常會聽到關聯式和非關聯式的類型。

兩者間各自的特色

關聯式資料庫

ex : MSSQL、MySQL、Oracle、postgresql等等

  • 使用 SQL command執行CRUD的動作
  • 遵循 ACID 原則確保交易一致性 (Transcation)
  • 資料表需要事先規劃有哪些資料表、有哪些欄位(主鍊、外來鍊、組合鍊)、資料表之前的關係(可以下ERD Model的關鍵字)
  • 關聯式結構可透過 JOIN (left、right、inner、outer)合併資料表

非關聯式資料庫

ex : MongoDB、Cassandra

  • 使用該工具說明文件定義的API操作資料庫
  • Document與Key-Value 架構並且資料是巢狀的結構
  • 不需要預先定義格式,可以很彈性化的針對需求調整結構

使用心得

這兩個資料庫的類型都用親自應用到專案,心得的話個人覺得要看專案的類型或者是開發的時程挑選符合開發效率的資料庫類型,例如一個很雛形的專案沒有很明確定義有哪些系統,但需要給上層或者是廠商看到開發的狀況,這時候對我來說使用NoSql可以滿足這一個情況(尤其搭配Node.js開發更有感)。

不過狀況如果是已經有一個明確的需求並且有相關的規格文件(例如合作的單位有確定要使用關聯式資料庫存取),以及專案的開發時程有比較充裕那就會使用關聯式資料庫。(光是確認多個資料表之間的關聯與欄位對於新鮮人的我還蠻花時間的QQ)

不過這個專案參考的程式碼資料庫處理是使用微軟的Sqlserver,因此在不大改的情況下最後選擇關聯式資料庫。

MSSQL怎麼安裝?

下載的網址

怎麼下資料庫指令?

回想起大學時期修的資料庫課程都會覺得很厭煩,常常都到期末才會特別去準備一下考試的內容,直到在職場上開始實作都會抱怨一下自己當初如果多花一點時間,現在就可以少一點重新搞懂資料庫的觀念了xD

/images/emoticon/emoticon02.gif

進行資料庫連線以及做一些指定時大部分的開發者都會使用SQL Server Management Studio操作和測試,或者也可以使用Azure Data Studio,安裝完成後就可以新增資料庫、資料表與欄位等相關的操作囉~

查詢資料

如果要去查詢商品資料表是否有符合條件名稱時基本會使用到SELECT、FROM與WHERE

  1. Select 查詢後有符合資料要顯示的欄位名稱(如果要顯示全部可以使用乘的符號)
  2. From 指的是要去查詢哪一個資料表
  3. where 則是查找的條件
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name operator value;

新增資料

如果是要去新增資料的話可以使用INSERT INTO的方法執行,需要引用的參數包含要更新的資料表名稱以及欄位(col)要新增的數值(value)。

INSERT INTO table_name (col1, col2, col3, col4, col5) VALUES (1, 2, 3, '4', '5')

更新資料

如果需要更新現有資料表內的資料時可以使用UPDATE的語法,同樣也需要先選定要更新的資料表名稱後接著SET欄位內要更新的數值,至於要更新哪一筆數值則是透過WHERE的條件。

UPDATE [資料表或可更新檢視表物件名稱] SET col1=值1, col2=值2, col3=值3, ... WHERE [指定條件]
UPDATE myTable SET Col1 = 3, Col2 = 5, Col4 = 5 WHERE Col0 = 198273

刪除資料

如果需要刪除資料的時候如同上述提到,。

DELETE FROM [資料表或可更新檢視表名稱] WHERE [給定條件]
DELETE * FROM [資料表或可更新檢視表名稱] WHERE [給定條件] -- 部份資料庫需要加 "*" 才會生效,例如 Microsoft Access
DELETE FROM myTable WHERE col0 = 1918299

參考來源

溫馨提醒

  1. 從昨天的後端篇提到的需要檢視script是否正確時,便可以透過上述提到的工具下對應的指令檢查輸出的結果是否正確,這樣子在後端除錯時可以確認資料庫處理的行為是正確的。
  2. 當開啟SSMS時如果無法連線到資料庫可以至SqlServer的組態管理員,並且確認下圖紅框處的服務是否有開啟。
    Imgur

怎麼匯入excel檔案

還有另外一個重要的處理就是將資料匯入到資料表內,由於當時提供要匯入資料表的資料檔案類型是excel,因此找了一下匯入的方法操作起來還蠻方便的(需要留意匯入的欄位對應的資料表欄位名稱設定)。

參考來源

網站上線

講到這裡大概已經是專案執行的第二個月同事也租了一個虛擬主機,而當時一直以為有人會負責這一部份結果還是要自己處理QQ,於是確認租地虛擬主機是window server後尋找可以上架網站的方法。

使用IIS上線

接著將當時處理的步驟大致的方向如下(使用IIS),更多的細節網路上下個關鍵字都有手把手教學的文章可以參考,使用的心得就是.NET比起其他框架上線的話比較沒有較多的問題(.NET Core的話還要先執行部署的動作)。

  1. 安裝IIS
  2. IIS新增站台
  3. 確認部屬網站是否可以正常連線

參考來源1
參考來源2

溫馨提醒

  1. IIS安裝好之後網址先輸入localhost確認是否有安裝成功
  2. 如果需要https連線請確認port 443是否有開啟
  3. 如果是在站台下新增虛擬目錄,上線的網站內連線的路徑建議改成相對路徑(直接寫死虛擬路徑名稱不易維護)
  4. 如果需要免費憑證可以下SSL for free的關鍵字參考網站

上一篇
Day 8 - 拯救落後的專案能撐一天是一天(後端篇)
下一篇
Day 10 - 試用期過了但要繼續下去嗎?
系列文
菜鳥工程師的奇幻旅程30

尚未有邦友留言

立即登入留言