已分解為 users、companies、urls 三表,透過 FK 關聯,支援無限擴充無冗餘。
若 urls.url 為固定下拉選單(如僅 10 個熱門網址),多用戶共用相同 URL 仍屬重複 → 應抽離 url_catalog 並建立多對多連結表。
users
userId | name | relCompId
companies
compId | company | company_address
url_catalog
urlId | url
1 | abc.com
2 | xyz.com
user_urls
userId | urlId
1 | 1
1 | 2
2 | 1
2 | 2
| 階段 | URL 存儲 | 適用場景 |
|---|---|---|
| 3NF | urls 表含 relUserId + url | 用戶自由輸入 URL,重複機率低 |
| 4NF | url_catalog + user_urls 連結表 | URL 來自固定選單/字典,多用戶高度共用 |
entity1_entity2(如 user_urls)PRIMARY KEY (userId, urlId)正規化非越高越好,核心在於識別業務語義中的函數相依與多值相依,按需分解,平衡查詢效能與維護成本。