iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

SA養成記系列 第 25

Day 25 資料庫Table Schema

  • 分享至 

  • xImage
  •  

資料庫有許多維度可以來認識它,除了前幾天的語法指令、技術原理,另一個跟SA系統分析很有關係的就是Table Schema。第一次聽聞Schema時,不明白是什麼意思,從user端而言,不就是資料表嗎?
資料表不是table嗎?為什麼叫schema呢?
table 不是 row跟column的組成嗎? 跟schema有什麼關係?
Google大神:schema是綱要、模式、架構...
架構、模式不就是DBMS關聯、非關聯嗎?……..越繞越遠總是在邊上打轉。

直到軟體開發單位,對table有了另一個維度的說明。才知道schema指資料表的欄位設計,泛指各種資料型態(datatype)、欄位數量、長度大小、主鍵、外鍵、唯一性、null、索引等。
當開發team 在討論Schema時,也意味者討論資料表及欄位設計。

建立資料庫

討論Table Schema也就是為了建立資料庫,那麼資料庫的起手式,就從系統的目標及範圍切入、分析:

  • 所需的欄位及架構
  • 欄位值的資料型態和欄位大小
    1. 數值型態: INT、Float
    2. 字串型態: CHAR、VARCHAR、TEXT
    3. 日期、時間型態: DATE、TIME、DATETIME、YEAR…
  • 欄位的必填性、多值性
  • 欄位的格式和屬性
    1. 下拉式選單
    2. 多維下拉式選單
    3. 關聯下拉式選單
    4. 文字方塊 text
    5. 文字區塊 testarea
    6. 單一選擇 選單 Radio Button
    7. 多重選擇 選單 Checkbox
  • 欄位其他屬性
    1. 唯一性
    2. 開放/不開放欄位
    3. 預設值/固定值
    4. 欄位值提供者:系統自動產生 or 人員填寫紀錄
    5. 內部資料庫連接
    6. 外部資料庫連接

以上差不多可以完成建立資料的欄位及屬性需求(Table Schema)
接著思考以下資料庫跟系統的關係:

  • 建檔功能需求
    1. 欄位檢查機制
    2. 建檔記錄需求
    3. 圖檔建檔預覽功能
    4. 建檔結果確認需求….
  • 查詢功能需求
    1. 簡單查詢(關鍵字查詢)
    2. 進階查詢(and)…
  • 其他系統功能需求
    1. 權限控管
    2. 報表列印
    3. 格式匯出匯入
    4. 代碼表維護功能…
  • 系統內、外關係的連接性檢查
    1. 系統內部連接:matadata紀錄與數位物件間的連接關係、matadata紀錄間的連接關係…
    2. 系統外部連接關係:與主要關聯檔的連接關係、與外部資料庫的連接關係、及其他系統的連接關係…

如此一來,資料庫的欄位也較滿足系統的使用需求。

ER Diagram

ERD(Entity Relation Diagram)實體關係圖: 這個幾乎是SA必備的設計圖,用來定義實體間彼此的關係,簡單來說就是資料表之間的關係,又稱為ER-Model。
此圖基本元素有:Entity(實體或資料表),用來描述實體有多少屬性(或欄位);以及Relations(連接線與方向),用來定義彼此的關係(例如:1對多、多對1、1對1、多對多等等)。

舉例:在資料表的欄位設計上,分為節目資料與分集資料,一個節目可以有多集的分集內容(連續劇)或是電影型態,所以在資料關係上是這樣的結構(下圖非標準的UML圖示)
https://ithelp.ithome.com.tw/upload/images/20231009/20154961YdpebMu8x5.png
由於片單的類型不外乎是來自各個國家,因此資料庫的欄位屬性與設計需要滿足使用者的使用方便性。所以在節目代號的欄位設計上,前2碼取國家簡稱為開頭,接著節目上映年度加上當年度採購的順序流水號(此欄位惟筆者自行設計,非NetFlix的資料結構)。

當這個節目有屬於影集性質,有多集分集內容時,在影片串流時所要讀取的影音檔案便可命名為CN19001_0005.mpg,此乃資料庫的唯一值,主鍵的概念。在結構化資料(SQL)的設計下,每個欄位有其代表意義,即可透過多種欄位組合,存取使用者的資料呈現,再透由標籤TAG的概念,也可以運用在觀眾喜好類型的情境下,抓取觀眾眼球。


上一篇
Day 24 資料庫 SQL
下一篇
Day 26 SI起步走-系統整合初體驗
系列文
SA養成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言