시작하기무료로 시작하기

급식 선택지 간소화

급식실 직원들은 고등학교에서 학교 운영의 중요한 부분을 위해 데이터를 체계화하는 훌륭한 작업이 진행되고 있다는 소식을 들었습니다. 이제 이 팀도 여기에 합류하고자 합니다. 특히, 학년 전체에 걸쳐 제공되는 다양한 급식 선택지를 추적하고 싶어 합니다. 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
);

여러분이 알고 있는 데이터베이스 정규화 지식을 바탕으로 meal 테이블에 더 나은 설계를 제안해 주세요.

이 연습은 강의의 일부입니다

PostgreSQL 데이터베이스 만들기

강의 보기

연습 안내

  • 재료를 저장하기 위한 ingredient 테이블 정의를 완성하세요.
  • meal 테이블의 id 열을 PRIMARY KEY로 만들고, ingredientsdate_served 열을 제거하여 meal 테이블이 2NF를 만족하도록 하세요.
  • meal이 제공되는 날짜를 저장하기 위한 meal_date 정의를 완성하세요.
  • ingredient 테이블의 재료를 meal_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 ___ ___(___)
);
코드 편집 및 실행