티스토리 뷰

되게 간단한건데 오늘 새롭게 알게되서 정리한다.

난 여태 한 테이블에 기본키가 2개 이상의 컬럼으로 이루어져있으면

그게 각각의 키로 인식해서 두 컬럼 모두 개별적으로 중복이 되면 안되는줄알았다.

그래서 두테이블간에 관계를 맺을때 식별자와 비식별자관계가 무슨 차이인지 잘 몰랐는데

2개 이상의 컬럼을 개별적으로 보는게 아니라 모두 합쳤을때 중복이 되면 안되는거였다.


즉, A컬럼과 B컬럼이 기본키로 잡혀있다고 가정할때 내가 여태 잘못알고있던 방식은 A는 A끼리 중복이 되면 안되고 B는 B끼리 중복이 되면 안되는줄알았는데 그게 아니고 [A = 1 B = 1], [A = 1, B = 2] 와 같이 두 컬럼 모두 중복이 아니라면 이 데이터는 무결성 원칙을 지키는 것이다.


A컬럼과 B컬럼이 같이 기본키일때


B컬럼만 기본키일때



첫번째 모습에서는 A컬럼의 값이 바뀌면 B컬럼은 다시 1부터 시작하지만 두번째 모습은 B컬럼만 기본키이기때문에 A컬럼의 값이 바뀐다 하더라도 B컬럼은 중복이 되면 안된다.


뭐랄가 이걸 공부하면서 느낀건데 마치 군대(더 정확히는 육군)에서 사단과 연대는 비식별자 관계고 연대와 대대는 식별자 관계라는게 떠오르면서 한방에 이해가 됐다.

사단의 숫자는 바껴도 연대는 상관없이 계속 연번으로 숫자가 증가되지만 연대의 숫자가 바뀌면 대대는 다시 1부터 시작하는게 딱 맞는 비유인거같다.


웬지 요즘들어 군대생각이 자주난다.

그립기도하고..한번쯤 부대한번 가보고싶기도하고.. 글 자체의 마무리가 기승전군이 되는듯??


'DataBase' 카테고리의 다른 글

오라클 comment 달기  (0) 2014.08.08
ERWin sql 추출  (2) 2014.08.05
기본키가 다중컬럼으로 이루어져있을때  (2) 2014.08.01
인덱스의 단점  (0) 2014.07.25
오라클 함수  (0) 2014.07.24
Oracle 기초  (0) 2014.07.24
공유하기 링크
TAG
댓글
  • 프로필사진 나그네 재입대 갑시다! 2015.09.08 10:28
  • 프로필사진 777천재777 첫번째 모습에서는 A컬럼의 값이 바뀌면 B컬럼은 다시 1부터 시작하지만 두번째 모습은 B컬럼만 기본키이기때문에 A컬럼의 값이 바뀐다 하더라도 B컬럼은 중복이 되면 안된다.
    위 말에서 A컬럼의 값이 바뀌면 B컬럼은 다시 1부터 시작 이무슨 말인가요?
    A컬럼의 값이 업데이트 되면 중복 검사를 B컬럼의 1부터 다시 한다는 말인가요?
    2020.10.15 12:26 신고
댓글쓰기 폼