[SQL ] 請問資料正規化實做

作者: kevin82222 (阿慶)   2020-11-15 21:19:27
資料庫名稱:MariaDB
資料庫版本:10.3.25
內容/問題描述:
大家好:
想請教各位關於資料表設計的概念/實做問題。
要用Laravel重寫原先的網頁,顯示已通過檢測認證的網站/app報告內容。
(這是我自己拿來練手的小專案...)
但不確定資料表該怎麼規劃...
(因原本是從報告檔直接撈資料出來show,沒用到資料庫)
希望各位能給點建議,或者哪些概念可以幫助釐清和定義這些資料關係。
謝謝。
報告會記載的內容有:
app報告:
基本資訊:
受測單位、檢測日期、檢測結果、app名稱、app版本
檢測資訊:
設備、型號、作業系統、版本、輔助工具、版本
檢測功能列表:
[..., ..., ...]
網站報告:
基本資訊:
受測單位、檢測日期、檢測結果、網站名稱、網址
檢測資訊:
作業系統、版本、位元、瀏覽器、版本、輔助工具、版本
檢測功能列表:
[..., ..., ...]
我有做了以下嘗試:
reports table:
| id | org_id | env_id | auth_at | auth_list | passed |
org table:
| id | name |
env table:
| id | dev_name | dev_serial | os_name | os_ver | os_arc | brs_name | brs_ver | ast_name | ast_ver |
或者再將 env table 分成 device, system, browser 三個表
然後讓 env table 去關聯這三個表的 id
但我不確定 如果這樣 是否就不需要 env table了?直接把三個參照放在 reports table?
想請問應該是 env: report_id (reports.id) 還是 reports: env_id (env.id) 呢?
(是否有方法區分 應該把 fk 放在reports or 個個小表呢?)
另外我也不知道應該怎麼處理 app名稱/版本 & 網站名稱/版本 的欄位
是建立一個 items table(id, name, value, type) 這樣
還是 app table(id, name, version), site table(id, name, url) 呢?
或者一樣可以把他們丟回第一張 reports table?
因為一個app通常會用iOS & Android 分別檢測(2份報告)
網站則會用 Chrome & Firefox 分別檢測(2份報告)
原始(Word)資料可能出兩份報告,也可能和併成一份
不知道這樣應該怎樣分析比較恰當呢?
之前自學的案例,都是學生 班級 科系 教師 課程
書籍 出版社 作者 讀者
起碼每一個個體都可以有相應動作 似乎比較容易拆芬他們
但是...一份報告...我不知道還能怎麼對付他@@
而且似乎這些資料只要符合 3NF 可以不只一種設計方式(?)
突然覺得 就算我只設計一張表 還是能寫出來...
只是不知道以後會出什麼問題= =
希望各位先進能提點一下努力成長中的業餘工程師><
再次感謝各位!

Links booklink

Contact Us: admin [ a t ] ucptt.com