식별자

 → 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자

 



 


식별자의 특징

 1. 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분되어야 한다.

 2. 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.

 3. 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.

 4. 주식별자가 지정이 되면 반드시 값이 돌아와야 한다.

 







 


식별자의 분류

 1. 엔터티 내에서 대표성을 가지는가 에 따라 "주식별자" 와 "보조식별자" 로 구분한다.

 2. 엔터티 내에서 스스로 생성되었는지 에 따라 "내부식별자" 와 "외부식별자"로 구분한다.

 3. 앤터티 내에서 단일 속성으로 식별이 되는가 에 따라 "단일식별자" 와 "복합식별자"로 구분한다.

 4. 원래 있는 식별자 속성을 대체하여 새롭게 만든 식별자를 구분하기 위해 "본질식별자"와 "인조식별자"로 구분한다.






주식별자 도출기준 

 →  데이터 모델링 작업 할 때 중요한 작업이다.. 

 

1. 해당 업무에서 자주 이용되는 속성을 주식별자로 정하자!

  - 사원이라는 엔터티가 있으면 구분하기 좋은게 주민번호와 사원번호인데, 자주쓰는게 사원번호이니까..

2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 피하자

  - 한 회사에 100개가 넘는 부서가 있는데. 각각의 부서 이름 다르다고,, 구분할수 있다고 해서 부서이름을

    주식별자로 정하지 않는다. 이러면 DB에서 읽어올때 항상 부서이름이 where 조건에 써야되기 때문.

   (원래 써서 읽어와야되는거 아닌가??.. 식별자로 불러들일수가있나?? 나중에 이해되면 수정!!)

 3. 속성의 수가 많아지지 않도록 한다





이렇게 너무 많은 주식별자가 있으면... SQL  쿼리문 쓸때 이렇게나 길게 써야하는데

 SELECT 계약금

 FROM 접수

 WHERE  접수.접수일자 = '2010.07.15'

 AND      접수.관할부서 = '1001'

 AND      접수.입력자사번 = 'AB45588'

 AND      접수.접수방법코드 = 'E'

 AND      접수.신청인구분코드 = '01'

 AND      접수.신청인주민번호 = '1627348213'

 AND      접수.신청횟수 ='1'



이거를 이렇게 '인조식별자' 로 간단하게 쓸수있다고 한다

 SELECT  계약금

 FROM 접수

 WHERE 접수.접수일자 ='10012010071501'



관할부서(4) + 접수일자(8) + 신청인구분코드(2)

 

 

반응형


글이 도움이 되셨다면 공감과 광고 클릭 한번 부탁드립니다! 💕
감사합니다 ✨