#8 Foreign Keys
#8.1 Data Normalization
데이터베이스 정규화
Normal form에 따라 Database를 설계하고 디자인하는 방법에 대한 모범 사례
Database에서 중복되는 data를 제거할 수 있게 해줌, data가 한 곳에만 저장되도록 함
중복되지 않은 data는 수정 / 추가 / 제거 등이 빠르다
#8.2 Entities
CREATE TABLE dogs (
dog_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
breed_name VARCHAR(50) NOT NULL,
breed_size_category ENUM('small', 'medium', 'big') DEFAULT 'small',
breed_typical_lifespan TINYINT,
date_of_birth DATE,
weight DECIMAL(5,2),
owner_name VARCHAR(50) NOT NULL,
owner_email VARCHAR(100) UNIQUE,
owner_phone VARCHAR(20),
owner_address TINYTEXT
);
-- DOG / BREED / OWNER 3개의 entity로 구분 가능
CREATE TABLE dogs (
dog_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
date_of_birth DATE,
weight DECIMAL(5,2),
owner_id BIGINT UNSIGNED,
breed_id BIGINT UNSIGNED
);
CREATE TABLE owners (
owner_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
owner_name VARCHAR(50) NOT NULL,
owner_email VARCHAR(100) UNIQUE,
owner_phone VARCHAR(20),
owner_address TINYTEXT
);
CREATE TABLE breeds (
breed_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
breed_name VARCHAR(50) NOT NULL,
breed_size_category ENUM('small', 'medium', 'big') DEFAULT 'small',
breed_typical_lifespan TINYINT
);#8.3 Foreign Keys
Foreign Key - 다른 table에 있는 column을 참조하는 column
Foreign Key Constraints - Foreign Key에 제약을 줌으로써 일관된 데이터를 저장할 수 있음
#8.4 ON DELETE
ON DELETE
CASCADE - 데이터가 삭제되면 연관된 데이터도 함께삭제
SET NULL - NOT NULL이 아닐 때 사용 가능, NULL
SET DEFAULT - 기본값 설정
#8.5 One-To-Many and One-To-One


#8.6 Many-To-Many

Last updated
Was this helpful?