TIL 11-07

거북·2023년 11월 7일

TIL

목록 보기
6/22

Spring을 활용하여 어느 정도 기능 구현을 할 수 있게 되었다. 이제 mysql을 사용하여 데이터베이스를 생성하고 데이터들을 확인 및 관리하는 연습을 할 것이다.

다음은 테이블을 생성하는 코드이다. not null은 말 그대로 데이터가 누락되는것 없이 차있어야 한다는 것이고 primary keynot nullunique의 특징을 모두 가진다는 뜻이다.

CREATE TABLE IF NOT EXISTS MAJOR
(	
	major_code varchar(100) primary key comment '주특기코드', 
	major_name varchar(100) not null comment '주특기명',
	tutor_name varchar(100) not null comment '튜터'
);

보통 이런식으로 생성된 각각의 테이블들중엔 같은 필드를 가지는 경우도 있다. 아래에 STUDENT 테이블을 보면 앞서 생성한 MAJOR테이블과 major_code라는 필드를 공통으로 가지는 것을 알 수 있다.

CREATE TABLE IF NOT EXISTS STUDENT
(
	student_code varchar(100) primary key comment '수강생코드', 
	name varchar(100) not null comment '이름',
	birth varchar(8) null comment '생년월일',
	gender varchar(1) not null comment '성별',
	phone varchar(11) null comment '전화번호',
	major_code varchar(100) not null comment '주특기코드',
	foreign key(major_code) references major(major_code)
);

이렇게 공통된 필드를 가지는 테이블의 경우 Java에서 자주 사용되는 개념인 상속과 비슷하게 의존을 시킬 수 있다. 이를 FOREIGN KEY라고 부르며 다음과 같이 사용할 수 있다.

ALTER TABLE MAJOR ADD CONSTRAINT exam_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code);

이런식으로 특정 필드를 기준으로 묶어두면 원하는 데이터를 확인할 때 서로의 필드값을 한번에 볼 수 있어서 편리하다.

하지만 FOREIGN KEY로 묶여 있으면 연결된 필드의 데이터 값을 삭제할 수가 없다. 이는 아래 코드와 같이 FOREIGN KEY를 생성할 때 on delete cascade를 추가해주어서 해결 가능하다.

ALTER TABLE MAJOR ADD CONSTRAINT manager_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code) ON DELETE CASCADE;

이렇게 연결된 데이터는 한 곳에서 삭제 시키면 연결된 모든 곳의 데이터가 삭제된다.

느낀점

점점 처음 배우는 것들이 늘어나면서 들어오는 정보량이 눈덩이처럼 불어나고 있다. 이것들을 내 것으로 만들기 위해서 강의 한번 듣고 넘기는 것이 아니라, 정리하는 시간을 가져보며 어떤 부분이 부족했는지 자가점검하고 그 부분을 중점적으로 복습하는 습관을 들여야 겠다.

0개의 댓글