第一正規化

建立 PostgreSQL 資料庫

Darryl Reeves

Industry Assistant Professor, New York University

範例:維護學生紀錄

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
  • 更新錯誤
  • 插入錯誤
  • 刪除錯誤
建立 PostgreSQL 資料庫

範例:更新後的重複資料

id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
建立 PostgreSQL 資料庫

範例:更新後的重複資料

id name courses home_room
122 Susan Roth Algebra I, Chemistry, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
建立 PostgreSQL 資料庫

範例:更新後的重複資料

id name courses home_room
122 Susan Roth Algebra I, Chemistry, Spanish II, Chemistry 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
建立 PostgreSQL 資料庫

範例:有欄位限制的插入

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
建立 PostgreSQL 資料庫

範例:有欄位限制的插入

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology, French Literature 204
613 Thomas Wright English III, Chemistry, Algebra II 102
建立 PostgreSQL 資料庫

範例:刪除紀錄影響資料完整性

id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright English III, Chemistry, Algebra II 102
建立 PostgreSQL 資料庫

範例:刪除紀錄影響資料完整性

id name courses home_room
122 Susan Roth Algebra I, Physics, Spanish II 101
413 Robert Cruz History, Geometry, Biology 204
613 Thomas Wright ??? 102
建立 PostgreSQL 資料庫

滿足第一正規化(1NF)

  • 1NF 要求:
    • 欄位值必須是原子值
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

CREATE TABLE student (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

CREATE TABLE student (
    id INTEGER,
    name VARCHAR(50) NOT NULL,
    courses VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

CREATE TABLE student (
    id INTEGER,
    name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

id name course home_room
122 Susan Roth Algebra I 101
122 Susan Roth Physics 101
122 Susan Roth Spanish II 101
413 Robert Cruz History 204
413 Robert Cruz Geometry 204
413 Robert Cruz Biology 204
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

CREATE TABLE student (
    id INTEGER,
    name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

CREATE TABLE student (
    student_id INTEGER,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    home_room SMALLINT NOT NULL
);
建立 PostgreSQL 資料庫

範例:符合 1NF 的 student 資料表

id first_name last_name course home_room
122 Susan Roth Algebra I 101
122 Susan Roth Physics 101
122 Susan Roth Spanish II 101
413 Robert Cruz History 204
413 Robert Cruz Geometry 204
413 Robert Cruz Biology 204
建立 PostgreSQL 資料庫

一起來練習吧!

建立 PostgreSQL 資料庫

Preparing Video For Download...