เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ปรับปรุงตารางรายการอาหาร

เจ้าหน้าที่โรงอาหารได้ยินเกี่ยวกับงานที่ดำเนินการอยู่ในโรงเรียนมัธยม เพื่อจัดระเบียบข้อมูลสำหรับด้านต่าง ๆ ของการดำเนินงานในโรงเรียน กลุ่มนี้จึงต้องการเข้าร่วมความพยายามดังกล่าว โดยเฉพาะอย่างยิ่ง เจ้าหน้าที่ต้องการติดตามรายการอาหารที่มีให้บริการตลอดปีการศึกษา ด้วยความช่วยเหลือของทีม IT จึงได้กำหนดตารางต่อไปนี้เพื่อวัตถุประสงค์ดังกล่าว:

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
);

โดยใช้ความรู้เรื่อง database normalization ให้ออกแบบตาราง meal ใหม่ให้ดีขึ้น

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การสร้างฐานข้อมูล PostgreSQL

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดนิยามของตาราง ingredient ให้ครบสมบูรณ์เพื่อใช้เก็บข้อมูลส่วนผสม
  • กำหนดให้คอลัมน์ id ของตาราง meal เป็น PRIMARY KEY และลบคอลัมน์ ingredients กับ date_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 ___ ___(___)
);
แก้ไขและรันโค้ด