[데이터베이스] ID의 종류, 빈칸 지양, 1정규화, 1:1, 1:n, m:n, 수정과 삭제, ERD

휘루·2023년 6월 22일
0

데이터베이스

목록 보기
1/6
post-custom-banner

UUID, Nano ID

UUID는 랜덤으로 부여지는 아이디를 말합니다.
ab24512, 2c3ad12 등 겹치지 않는 키입니다.

UUID를 쓰는 이유는 아이디가 노출이 되었거나 회사정보가 노출될 수 있기 때문에 사용합니다.
이 외에도 나노 아이디가 있습니다.

row를 늘리는 일은 더 어렵다

전화번호가 두개인 사람이 있는데 이 사람을 옆으로 늘려 만드는게 더 쉽지 않을까 생각하실 수 있습니다.

그러면 아이디 1을 가진 사람이 전화가 2개인데 Row를 늘리는 것은 일이 더 어려워집니다.
전화번호2의 빈칸이 많이 있는 걸 추천하지 않는데요.
전화번호2의 빈칸이 없는 사람도 많고 빈칸이 없는 데이터를 만드는 걸 지향하기 때문입니다.

1정규화, 테이블간의 관계 (1:1, 1:n, m:n)

사원:전화번호
사원:프로젝트

여기서 관계는 1:1, 1:n(일:다수), m:n(다수:다수)가 있습니다.

1 아이디는 전화번호를 여러개 가질 수 있습니다.
전화번호를 여러사람이 가질 수는 없습니다.

그래서 1:n입니다.

1 아이디는 프로젝트가 여러개 소속될 수 있습니다.
그래서 1:n으로 볼 수 있는데 반대로 생각하면

홈페이지는 여러명일 수 있습니다.
AI도 여러명 일 수 있습니다.

그러면 m:n이 되는데 이런 경우는 잘못 만든 겁니다.

1:n기준으로 다시 만들기

사원-프로젝트를 기준으로 다시 만든다면

(왼쪽 아이디의 외래키와 프로젝트를 기준으로)

1(사원 아이디)는 1,2에 다 참여했으니 1-1, 1-2에 두가지 다 해당이 되고
나머지는 2-1, 3-2, 4-2, 5-1, 6-2로 참여 프로젝트 연결을 해놓은 겁니다.

사원-프로젝트가 1:n이 되면
프로젝트-사원도 1:n이 되어야 키 관리가 쉽습니다.

지금은 이렇게 숫자로만 작성해서 헷갈리지만 나중에 명령어로 합칠 수가 있습니다.
이렇게 데이터만 저장을 해놓고 나중에 불러올 수 있습니다.

수정, 삭제하는 과정에서의 실수

사원-프로젝트를 이름을 바꿔 한다면 아래와 같이 됩니다.

1-1 (1-홈페이지), 1-2가 (1-AI) 이면
프로젝트 아이디 (외래키)에 있는 프로젝트의 1은 다 홈페이지로 바뀌고 2는 AI로 바뀌어 있겠죠.

이런식으로 바뀌어 있겠죠.

(실제로 이렇게 바꾸진 않고 위의 사진은 예시입니다.)

홈페이지 프로젝트가 끝나서 삭제하는 상황입니다.
그래서 삭제를 해야하는데

이런식으로 5번 아이디가 남아 있으면 이 프로젝트가 살아있는 게 되서 문제가 됩니다.

1:1의 경우, 빈칸 관련

빈칸 있는 데이터는 1:1로 분리를 합니다.
자주 접근하는 데이터인지 파악하고 자주 접근하는지, 자주 접근하지 않는지 따로 구분합니다.
자주 접근하지 않는 데이터는 빈칸이 있어도 상관 없습니다.

5번과 7번이 쓰이지 해당 내용이 없거나 자주 쓰이지 않는 경우가 있습니다.
이럴 경우 그냥 지웁니다. 그리고 위로 올립니다.

ERD

https://www.erdcloud.com/d/QqKNELMS6e3AB3xia

위와 같이 테이블간의 관계를 보기 편하게 해놓은 걸 ERD라고 합니다.
보통 테이블을 설계할 때 Excel에 그리지 않고 ERD 프로그램으로 설계를 합니다.
Column을 추가, 수정, 삭제를 할 때 편리합니다.

profile
반가워요
post-custom-banner

0개의 댓글