開始使用免費開始

精簡餐點選項

學校餐廳的同仁聽說高中正在為多項校務建立有條理的資料管理,他們也想加入這項工作。特別是,他們想紀錄整個學年可提供的各種餐點選項。在資訊人員的協助下,為此目的先定義了下列表格:

CREATE TABLE meal (
    id INTEGER,
    name VARCHAR(50) NOT NULL
    ingredients VARCHAR(150), -- comma seperated list
    avg_student_rating NUMERIC,
    date_served DATE,
    total_calories SMALLINT NOT NULL
);

運用你對資料庫正規化的了解,為 meal 資料表提出更好的設計。

本練習屬於課程

建立 PostgreSQL 資料庫

檢視課程

練習說明

  • 完成 ingredient 資料表的定義,用來儲存食材。
  • meal 資料表的 id 欄位設為 PRIMARY KEY,並移除 ingredientsdate_served 欄位,讓 meal 資料表符合 2NF。
  • 完成 meal_date 的定義,用來儲存供應某個 meal 的日期。
  • 完成 meal_ingredient 的定義,讓 ingredient 資料表中的食材可以從 meal_ingredient 資料表被參照。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

CREATE TABLE ingredient (
  -- Add PRIMARY KEY for table
  ___ ___ ___ ___,
  name VARCHAR(50) NOT NULL
);

CREATE TABLE meal (
    -- Make id a PRIMARY KEY
	id ___ ___ ___,
    name VARCHAR(50) NOT NULL,

	-- Remove the 2 columns (below) that do not satisfy 2NF
  	ingredients VARCHAR(150), -- comma separated list
    avg_student_rating NUMERIC,
    date_served DATE,
    total_calories SMALLINT NOT NULL
);

CREATE TABLE meal_date (
    -- Define a column referencing the meal table
  	meal_id INTEGER ___ ___(___),
    date_served DATE NOT NULL
);

CREATE TABLE meal_ingredient (
  	meal_id INTEGER REFERENCES meal(id),
  
    -- Define a column referencing the ingredient table
    ingredient_id INTEGER ___ ___(___)
);
編輯並執行程式碼