본문 바로가기
Programming/DB

[DB] 식별자

by AI_Wooah 2022. 3. 7.

제품지급 부서사원

제품이 부서 사원이랑 다대다 관계

제품과 사원 제품과 부서간에 서로 다대다 관계

제품지급이라는 엔티티 생성

제품지급 보시면 지급처라는 컬럼이 부서코드가 들어갈 수 있고 사원번호가 들어갈 수 있음

외래키 부모테이블 두개

여러 테이블 참조할 수 있는 관계를 배타관계선이라고 한다.

그리는 방법은 위에 배타관계 클릭해서 선끼리 연결하면 된다.

이렇게 표현은 하지만 사실

하나의 컬럼은 하나의 테이블만 참조할 수 있다

무결성 제약조건을 백프로 지켜서 넣어줄 수 없다.

물리적 모델에서는 둘다 부모로 가질 수 없기 때문에

이걸 대처하기 위해서 값을 잘 넣어야 한다.

2 둘다 확인해서 이게 위배되는지 확인 한 후에 값을 넣기

쿼리문 작성을 객체로서 저장해놓고 불러다 쓰기

지급처를 사원 부서 두개 컬럼으로 나눈 후 한 테이블씩 참조하게 되면 좋지만 낫널조건 설정하지 못한다.

식별관계

제품 아이디를 하나의 식별관계로 만들어놓으면 동일한 아이디로 계속 인서트 할 수 없다.

이전에 있던 것을 지워버리면 되는것도 방법인데 과거 내역이 다 필요한 경우에는 이력이 필요하다

 

마땅한 주 식별자가 없는 경우 인위적으로 넣을수 있다.

엔티티에서 마땅한 프라이머리키가 없을 때 인위적으로 만들 수 있음 = 인위적 식별자

인위적 식별자 문제점 인위적 주 식별자는 편리하지만 위험성도 있다. 위험성은 이미 똑같은것을 중복하게 해도 똑같은 값이 들어갈 수 있다.

시퀀스라는 객체를 이용하면 매번 중복된 값인지 확인해야 하는 부담이 줄어든다

세번째 배타적관계를 지원해주지 않는다

순환참조

최소 한개 값은 있어야 참조가 가능하기 때문에 fk

not null 제약조건 설정되어있지 않아야 한다

만다터리 옵셔널로 참조해야 함

CASCADE 삭제조건 세가지

ON DELETE SET NULL 삭제조건 세가지

 

반응형

'Programming > DB' 카테고리의 다른 글

[sqlite3] database disk image is malformed 에러 뜨는 경우  (0) 2022.03.17
[DB] DDL, DML  (0) 2022.03.07
[DB] 데이터 모델링  (0) 2022.03.07
Database(ORACLE)  (0) 2022.03.07
[Oracle] DML-SELECT  (0) 2022.03.07

댓글