어떠한 작업을 하더라도 중복되는 구문에 대해서 처리를 하지 않는다면 불편함을 느낄 수 밖에 없다.
만일 중복되는 구문이 1000개라면 수정을 하게되면 1000번의 반복 작업을 거쳐야 할 것이다.
따라서 우리는 이러한 구문을 따로 묶어 처리를 하여 1번의 작업만으로 1000개의 모든 구문이 한꺼번에 처리될 수 있도록 한다.
데이터베이스 역시 마찬가지이다.
지금까지 예시로 들어왔던 강의 정보라면, 같은 강의명인 경우도 있고 같은 교수의 강의인 경우도 있다.
이러한 중복을 해결하기 위해 강의명 테이블, 교수명 테이블 등 테이블의 분리를 수행하게 된다.
테이블 분리
다음과 같은 테이블을 살펴보면 교수명에 중복이 있음을 확인할 수 있다.
이를 해결하기 위해 일단 다음과 같이 변경된 테이블을 생성한다.
name대신 name_id라는 필드를 이용해 구분을 할 것이며
기존의 name은 name이라는 table을 새로 만들어 여기에 저장할 것이다.
위처럼 두 개의 테이블로 분리시키고 둘의 연결만 해주게 된다면 name table의 값만 변경해도 test2 table에서는 여러개의 데이터 변화가 일어나는 효과를 가질 수 있다.
JOIN
두 테이블을 서로 연결시키기 위한 방법으로 JOIN을 사용할 수 있다.
SELECT * FROM (table name) LEFT JOIN (table name2) ON (연결할 column); 을 통해 연결할 수 있다.
이제 name_id와 id는 조회할 때 의미가 없으므로 제외한다.
제외할때 병합된 table에서 표기할 name이 두가지 이므로 test2.id를 AS문을 통해 다른 이름으로 바꾸도록한다
.
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] ERROR 1044 (42000): Access denied for user (0) | 2024.03.29 |
---|---|
[MySQL] CRUD (0) | 2024.01.12 |
[MySQL] MySQL의 구조 (0) | 2024.01.11 |