본문 바로가기

프로그래밍/mySQL

[mySQL] 정규화 방법1(원소화)

하나의 열에 여러 자료가 있을 경우 정규화 방법


1)

 family

 first, second, third 


2)

 family 

 first

 second 

 third 


2번 표와 같이 바꾸는 것


1) 열 추가

ALTER TABLE my_table

ADD COLUMN family1 VARCHAR(20),

ADD COLUMN family2 VARCHAR(20),

ADD COLUMN family3 VARCHAR(20);


2) 첫번 째 원소를 얻어낸다

UPDATE my_table

SET family1 = SUBSTRING_INDEX( family, ',', 1);

//family열에서 1번째 콤마(,)가 나오기 전까지 추출


  family

  family1

 family2 

 family3 

  first, second, third 

  first 

 

 


3) 옮기고 나서 원래 원소는 지운다.

UPDATE my_table

SET family = SUBSTR ( family, LENGTH(family1)+2);

// SUBSTR : 문자열 일부를 반환

// family1의 길이만큼과 2(콤마와 띄어쓰기빈칸)를 더한 수 만큼 지운다.


  family

  family1

 family2 

 family3 

 second, third 

  first 

 

 


4) 나머지 반복

UPDATE my_table

SET family2 = SUBSTRING_INDEX(family, ',' , 1),

family = SUBSTR (family, LENGTH(family2)+2),

family3 = family;


  family

  family1

 family2 

 family3 

  third

  first 

 second

 third