
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期 & 時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字 & 圖片函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
第一正規化 (1NF)
資料庫規範化是有效組織資料庫中資料的過程,目的是消除資料庫中的冗餘資料並確保資料依賴關係合理。各種規範化形式用於消除或減少資料庫表中的資料冗餘。
什麼是第一正規化 (1NF)?
第一正規化 (1NF) 設定了組織資料庫中資料的基本規則。如果一個數據庫滿足以下條件,則稱其處於第一正規化:
規則 1(原子值) - 表的每一列都應只包含原子值。原子值是不能進一步細分的 值。
規則 2(無重複組) - 沒有重複的資料組。這意味著表不應包含重複的列。
在設計資料庫表時,您必須注意至少符合第一正規化,否則在資料庫操作過程中會遇到很大的問題。
規則 1 - 原子值
表的每一列都應只包含原子值。原子值是不能進一步細分的 值。
考慮以下用於儲存客戶資料的 CUSTOMERS 表:
ID | 姓名 | 年齡 | 薪資 | 城市 | 國家 |
---|---|---|---|---|---|
1 | Ramesh | 32 | 2000.00 | Hyderabad, Delhi | 印度 |
2 | Mukesh | 40 | 5000.00 | 紐約 | 美國 |
3 | Sumit | 45 | 4500.00 | 馬斯喀特 | 阿曼 |
4 | Kaushik | 25 | 2500.00 | 加爾各答 | 印度 |
此表不處於第一正規化,因為城市列可以包含多個值。例如,第一行包含值“海得拉巴”和“德里”。
現在,為了使此表達到第一正規化,我們必須考慮一個實際問題,即客戶可以居住在不同的城市,這些城市可能在同一個國家或不同的國家。因此,我們將表拆分為兩個單獨的表,如下所示:
CUSTOMERS 表
ID | 姓名 | 年齡 | 薪資 |
---|---|---|---|
1 | Ramesh | 32 | 2000.00 |
2 | Mukesh | 40 | 5000.00 |
3 | Sumit | 45 | 4500.00 |
4 | Kaushik | 25 | 2500.00 |
CUSTOMERS_ADDRESS 表
ID | 城市 | 國家 |
---|---|---|
1 | 海得拉巴 | 印度 |
1 | 德里 | 印度 |
2 | 紐約 | 美國 |
3 | 馬斯喀特 | 阿曼 |
4 | 加爾各答 | 印度 |
規則 2 - 無重複組
沒有重複的資料組。這意味著表不應包含重複的列。
考慮以下用於儲存客戶資料的 CUSTOMERS 表:
ID | 姓名 | 年齡 | 薪資 | 城市1 | 城市2 | 國家 |
---|---|---|---|---|---|---|
1 | Ramesh | 32 | 2000.00 | 海得拉巴 | 德里 | 印度 |
2 | Mukesh | 40 | 5000.00 | 紐約 | 美國 | |
3 | Sumit | 45 | 4500.00 | 馬斯喀特 | 阿曼 | |
4 | Kaushik | 25 | 2500.00 | 加爾各答 | 印度 |
此表不處於第一正規化,因為我們重複了城市列兩次,並且您可以在當前表中看到一些問題。此表始終在磁碟上為兩個城市保留空間,無論該人是否居住在兩個城市。
為了消除重複的列並將錶轉換為第一正規化,請將表拆分為兩個表。將重複的列放入其中一個表中,如下所示:
CUSTOMERS 表
ID | 姓名 | 年齡 | 薪資 |
---|---|---|---|
1 | Ramesh | 32 | 2000.00 |
2 | Mukesh | 40 | 5000.00 |
3 | Sumit | 45 | 4500.00 |
4 | Kaushik | 25 | 2500.00 |
CUSTOMERS_ADDRESS 表
ID | 城市 | 國家 |
---|---|---|
1 | 海得拉巴 | 印度 |
1 | 德里 | 印度 |
2 | 紐約 | 美國 |
3 | 馬斯喀特 | 阿曼 |
4 | 加爾各答 | 印度 |
現在我們已經規範化了表,這些表滿足處於第一正規化的要求,現在我們可以為同一個客戶分配多個城市而不會浪費空間。
廣告