728x90
반응형
DB를 사용할 때 종종 여러가지 테이블을 한군데로 묶어서 사용하고 싶을 때가 있다.
만약 특정 연결값이 있다면 한번에 묶어서 VIEW로 볼 수도 있고 그 값이 변경이 된다면 그 연결된 값도 변경이 되면 좋지 않을까?
그래서 사용할 수 있는 것이 FOREIGN KEY이다
예시를 들어보자
만약 유저 정보와 그 유저의 거래정보를 저장하는 테이블이 있다고 가정하자
유저 테이블:
거래정보 테이블:
유저테이블의 num값을 FOREIGN KEY의 references로 삼고 userboard의 num을 foreign key의 자식 객체로 정의하려면 아래와 같이 정의한다.
ALTER TABLE userboard ADD FOREIGN KEY(num) REFERENCES userinfo(num) [ON DELETE CASCADE / ON UPDATE CASECADE];
- ON DELETE CASCADE
외래 키에서 참조하는 키가 포함된 행을 삭제하려고 하면 해당 외래 키가 포함되어 있는 모든 행도 삭제 - ON UPDATE CASCADE
외래 키에서 참조하는 키 값이 포함된 행에서 키 값을 업데이트 하면 해당 외래 키를 구성하는 모든 값도 키에 지정된 새 값으로 업데이트되도록 지정
위의 CASCADE 값까지 지정하게 되면 데이터베이스가 아래의 제약사항을 가지고 연결된다.
- 자식데이터베이스인 거래정보 테이블의 num은 부모데이터베이스인 유저 테이블이 가지고 있는 num값 밖에 넣지못한다.
- 또한 부모테이블의 num값이 바뀌면 자식테이블의 num값도 같이 변경되어 값을 서로 연결시킬 수 있다.
- num값이 지워지면 자식테이블의 전체 테이블(row)도 지워진다.
728x90
반응형
'국비과정 > DB - mySQL' 카테고리의 다른 글
Error Code: 1093. You can't specify target table - mysql 단일 동일 테이블 실행 시 오류 해결 법 (0) | 2022.04.17 |
---|---|
DB에서 중복행 제거하는 쿼리 (0) | 2022.04.09 |
DB의 정규화 (0) | 2022.03.21 |
DB - mySQL을 JAVA와 연동하기 (0) | 2022.03.16 |
mySQL 더블쿼리, foriegn key, union, outer join 사용법 (0) | 2022.03.16 |