DB는 무수한 음식이 올려진 테이블들이 나열된 레스토랑과 같다. 음식은 컬럼이고
테이블은 테이블이다. 각 테이블에는 사과와 배등 과일이 나열되었다고 보자. 분명
이들은 독립적이다. A테이블의 사과와 B테이블의 사과는 다른 사과인 것이다.
그런데 조리장의 실수로 병든 사과가 올라갔다고 생각해보자 이 사과는 겉은
멀쩡하지만 속은 이미 맛이간 사과들이라고 할 수 있다. 그럼 조리장은 이를 매니저에게
보고하고 매니저는 테이블에 올라간 모든 사과를 고급의 사과로 다시 바꾸기 위해 웨이터
들에게 각 테이블에 있는 사과의 교환을 명령한다. 그런데 그만 실수로 웨이터가
테이블 하나를 빼먹는다면 분명 그 해당 테이블에서는 손님이 화를 낼 것이다. DB에서도
마찬가지이다. 잘못된 데이터의 변경은 매우 중요한일이고 해당 데이터는 유기적으로
연결되어 있어야 한다. 이를 위해 DB에서는 Cascade 가 있다. 먼저 A테이블의 a컬럼이 있고
B테이블에도 a컬럼이 있다고 하자 그럼 A와 B중 Primary가 될 테이블을 지정하자 여기서
A를 프리머리로 잡는다면 A테이블의 a컬럼이 프리머리 유니크 선언이 되어야하고 릴레이션쉽
을 통해 A.a 가 프리머리 B.a가 Foreigh으로 지정되야한다. 그리고 끝으로 입력과 수정이 일어
났을 때 Cascade 수정, 또는 삭제가 일어나게 옵션을 지정해주면 된다. 수정으로 지정했다면
사용자가 A.a의 값을 수정할 때마다 B.a의 값도 같이 변경될 것이다. 다만. A.a 와 B.a 모두 이미
공통된 값을 인자로 가지고 있어야 한다.
www.gamehon.com
'Game Programming' 카테고리의 다른 글
심심풀이 배선게임~ (0) | 2007.08.28 |
---|---|
다시 손 잡은 게임. (0) | 2007.07.25 |
shared_ptr boost 라이브러리 (0) | 2007.06.14 |
포인트 툴 (0) | 2007.05.24 |
평면상에서 사이각 구하기. (0) | 2007.05.19 |