ERD
에 핵심은 테이블의 구조를 시각적으로 한 눈에 볼 수 있게 해주기 때문에 이해하기 용이하는데 있습니다.
관계와 관계간의 정보를 나타냄으로써 어떤 테이블 구조로 만들었는지 알 수 있기 때문입니다.
또 create문
을 작성해주어 따로 작성하지 않아도 되는 장점이 있습니다.
ERD
는 실체(Entity), 속성(Attribute), 관계(Relationship)로 구성되어 있습니다.Entity는 실체로써 정의 가능한 사물이나 개념을 말합니다.
예로 가게, 회원등이 있습니다.
위로 예시들자면 장바구니, tb_basket이라고 볼 수 있습니다.
개체가 가지고 있는 속성입니다.
회원을 예로 들자면 회원번호,비밀번호,아이디,휴대폰번호 등이 있을 수 있습니다.
위로 예시를 들자면 식별자, 상품개수, 등록일자, 사용여부 등이라고 볼 수 있습니다.
PK, FK
PK와 FK가 존재합니다.
PK는 기본키로써 다른 속성과 차별되게 고유값을 가지고 있는 속성입니다.
예를 들어 대한민국 국민으로 예를 들면 다른 사람과 구분될 수 있는 주민등록번호 같은 고유한 속성을 나타냅니다.
FK는 관계에서 다른 객체의 PK의 값을 나타냅니다.
뒤에 좀 더 자세히 설명할 예정이지만 간단히 설명하자면 위의 그림에서 장바구니를 어떤 유저가 담았는지 알기 위해 유저의 PK값인 user_no가 존재하는 것입니다.
Entity와 Entity간의 관계를 나타냅니다.
1:1, 1:다수, 다수:다수의 관계가 있습니다.
쉽게 설명하자면 하나의 회원은 여러개의 장바구니를 가질 수 있습니다.
이때는 회원 1 : 장바구니 다수의 관계가 되겠죠
이처럼 관계는 전반적인 영향을 끼치기 때문에 설계할때 유의해서 설계해주어야합니다.
위에서부터 차례대로 간단하게 설명하자면
예를 들어 설명하자면 배달앱의 경우 여러개의 회원주소를 가지고 한개를 메인으로 지정할 수 있습니다.
그럴때 위같이 없어도 돼고 하나 있어도 돼고 다중도 돼는 표시를 사용합니다.
처음 가입할때 주소를 입력 안 할 수도 있는 설계를 반영했기에 저렇게 사용했습니다.
처음 가입할때 주소를 입력하는 구조라면 4번에 해당하는 하나이거나 다중 값으로 해주면 됩니다.
관계를 설정할때 식별관계와 비식별관계가 있습니다.
식별관계는 FK를 PK처럼 객체를 구분하는 값으로 볼것인가 아닌가에 있습니다.
쉽게 설명하면 휴대폰 인증을 할때 이름,통신사,휴대폰번호로 구분하는 것처럼 동일한 값이 있을 수도 있기에 식별관계로 이걸 복합키로 만들어줍니다.
기본키, 복합키, 인조키
기본키는 그대로 PK 단일입니다.
복합키의 경우 PK와 FK의 혼합입니다.
인조키 복합키가 복잡하기 때문에 임의의 PK를 만들어 기본키 역할을 합니다.
기초적인 설명이 끝났으니 간단한 ERD를 만들어보겠습니다.
회원이 장바구니를 통해 구매를 할 수 있고 회원은 여러개의 주소를 저장할 수 있다.라는 간단한 걸로 설계를 해보겠습니다.
인덱스(Index)
DB에서 select를 빨리하기 위해 만들어둔 즐겨찾기같은 개념입니다.