PK

    [DB] PK를 정하는 기준

    [DB] PK를 정하는 기준

    🔍 주식별자를 정하는 기준 PK를 설정하면 키에 대응하는 인덱스 테이블이 생성되기 때문에 적절한 PK를 설정하는 것은 중요하다. (인덱스 테이블은 키 값에 의해서 정렬되어 있기 때문에 빠른 값 찾기를 가능하게 한다.) 컬럼의 성격을 봤을 때 유일성이 있으면 후보키가 될 수 있다. 그러면 여러 후보키가 있을 때 어떤 컬럼을 PK로 정해야 할까? → NOT NULL이 될 수 있냐와 고객이 제공한 데이터인지 아닌지의 여부로 정할 수 있다. 위에서 PK로 적절한 컬럼은 무엇일까? -> 일단 후보로 주민번호, 폰번호, 이메일, 고객번호가 될 수 있다. 유일한 값이기 때문이다. 이제 NOT NULL의 여부를 확인해봐야 한다. 여기서 폰번호와 이메일은 null이 될 수 있기 때문에 pk후보군에서 제외된다. 그렇다면 ..

    [JPA] 연관관계의 주인이 '다'쪽에 있는 이유

    [JPA] 연관관계의 주인이 '다'쪽에 있는 이유

    연관관계의 주인이 '다'쪽에 있는 이유에 대해 살펴보자. 이를 위해 먼저 객체지향세계와 DB의 차이에 대해 알아야 한다. 🔍 객체지향과 DB, 연관관계의 주인이 필요한 이유 Member와 Team이라는 클래스 또는 테이블이 있다고 해보자. 여기서 이 둘은 다대일 단방향 관계이다. 객체지향에서 Member Team은 다음과 같이 표현될 수 있다. public class Member { int id; String memberName; Team team; } public class Team { int id; String teamName; } RDBMS에서는 다음과 같이 표현이 된다. DB와 객체지향의 큰 차이점은 객체지향 프로그래밍에서는 Member에서 Team으로의 조회는 가능하지만, Team에서는 Mem..