Menyederhanakan pilihan menu
Staf kafetaria mendengar tentang berbagai pekerjaan hebat yang sedang dilakukan di sekolah menengah untuk mengatur data bagi aspek-aspek penting dari operasional sekolah. Kini, mereka ingin ikut serta. Secara khusus, staf ingin melacak berbagai pilihan menu yang tersedia sepanjang tahun ajaran. Dengan bantuan staf TI, tabel berikut didefinisikan untuk tujuan tersebut:
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
);
Dengan pengetahuan Anda tentang normalisasi basis data, Anda akan memberikan desain yang lebih baik untuk tabel meal.
Latihan ini adalah bagian dari kursus
Membuat Database PostgreSQL
Petunjuk latihan
- Lengkapi definisi tabel
ingredientuntuk penyimpanan bahan. - Jadikan kolom
idpada tabelmealsebagaiPRIMARY KEYdan hapus kolomingredientssertadate_servedagar tabelmealmemenuhi 2NF. - Lengkapi definisi
meal_dateuntuk menyimpan tanggal ketika suatumealdisajikan. - Lengkapi definisi
meal_ingredientsehingga bahan pada tabelingredientdapat direferensikan dari tabelmeal_ingredient.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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 ___ ___(___)
);