키 위반이 왜 일어 나는 걸까요.?
주요 키를 제가 자동 증가로 했었읍니다. 그러니 동일한 키로 다시 입력하면, 키 위반이 일어 나던데, 그건 인증합니다. 프라이머리키의 유닉크한 속성을 지키기 위해서라는건 근데, 어떨때 보면 이유 없을꺼 같은데도 날때도 있던것 같던데, 주로 어떠 어떠한 경우에만 나는지요.
그리고 테이블이 깨어 졌다는 말을 듯곤 하는데, 테이블이 어떤때 깨어졌다는 말을 하는지, 그 상태가 어떠한지 알고 싶어요. 그리고 왜 그런 현상이 일어나는지 무지 궁금하거든요. 그리고 그걸 살릴수 있는 방법은 없는지요.?
그리고 제가 지금 마스트 디테일 관계로 프로그램을 작성중인데요. 디테일에다가 삽입할때, 마스트 키와 이어줄수 있는 외래키를 설정해주고, 그 외래키와 마스트의 키를 비교하여 질의를 하는거겠죠. 조금을 알것 같으면서, 무지 걱정되고 모르겠거든요. 경험이 많으신 델 선배님, 그러한 관계로 전적으로 SQL로만 작업할려고 하는데, 조언 좀 주십시요.
자신의 경우를 예를 들어 주시면 감사하겠습니다.
지금 제가 하고 있는거는 예를 들어서 고객과 고객의 가족을 마스트 디테일 관계로 작업을 하고 있거든요. 거기서 디테일 관계에 있는 고객 가족 테이블을 올리겠습니다.
좀 봐주시길..
FamilyNo //디테일 테이블의 주요키
memberID //마스터 테이블의 주요키, 외래키로 설정(근데 파라독스에서는 외래키를 설정해주는 부분이 따로 없는거 같은데 맞나요. 그냥 마스터 테이블의 키를 이렇게 해주는것 만으로 외래키가 되는건가요.)
Frelation //'F' Family의 첫 문자, 가족관계
Fname //가족의 이름
Fbirth //가족의 생일
Flunar //가족의 음력체크 부분
기타 3~4개의 필드,
여기서요..
꼭 가족의 'FamilyNo(디테일 테이블의 주요키)'를 잡아줄 필요가 있나요. 안해도 상관 없을것 같지만, 제 생각으로는 모든 테이블에는 레코드의 유일하게 구분해주는 키가 있어야지 않을까하는 생각이 들거든요. 또 테이블에 마스키가 없어도 상관 없다는건 알지만, 예제를 살펴 보니까 이르듯 조금한 테이블이라도 항상 유일하게 구분해주는 값을 갖게 하드라고요.
제가 생각해도 가족에 대한 작업중, 꼭 프라이머리가 필요하지는 않지만, 예제서 그렇게 많이 하니깐 그냥 'FamilyNo'라는 유일한 키를 자동생성으로 만었거든요.
제생각을 글로 표현 하려니깐 무지 힘드네요. 적절히 표현치 못한것 같아서요.
어떻게 생각하세요. 위의 글을 읽으시니깐요.
잘 모르시는 분이라도 아래 마스트 디테일관계에서 관계 설정에 관한 부분에 대한 자신의 생각이라도 알려 주시면 감사하겠습니다.
이게 저만의 생각인지 어떤지 알고 싶어서요.