
1. 공부하는 법.
단순 듣기, 단순 코드따라치기가 아닌 , 자신만의 언어로 바꿔라 (ex 블로깅, 기록)
2. 파레토 법칙
현업에서 사용하는 20% 만 알아도 80%의 효과를 낼 수 있다.
자주사용하는 20%만 확실하게 알자 ! 완벽주의 성향 --> 나.. 그렇게 공부했지만 너무 오래 걸렸다.. 실전에 적용해보자.
3. First wood
이해가 안되는 언어가 많을 수록 어려운 분야라고 생각한다.
효율적인 공부를 하기위해서는 이해가 안되는 언어일 수 록 가장 먼저 정리를 해야한다.
데이터베이스 모델링이란?
정의: 웹 서비스나 모바일 어플리케이션을 운영하면서 발생하는 데이터를 잘 분류해서 데이터를 저장해 놔야한다.
즉 : 데이터를 어떻게 분류해서 저장할 지를 설계하는 행위를 보고, 데이터베이스 모델링(Database modeling)이라고 표현한다.
데이터모델링을 왜 배워야하는지 ?
사람마다 옷장에 옷을 정리하는 방법은 다르다. 하지만 효율적으로 옷장에 옷을 저장하는 방법은 있다. 최소한 내가 옷을 꺼내 입을 때 편하게 찾을 수 는 있어야한다.
관계형 데이터베이스
1. 열과 행으로 나누어져있다.
2. PK: 특정 데이터를 식별하기 위한 값 ex) 쌍둥이나, 비슷한 사람들을 구별하기 위한 특정 요소(주민 번호)
현업에서 PK를 설정할 때: 주민번호, 이메일로 PK로 설정하는 방법을 볼 수 있다. 하지만, 바뀔 가능성이 존재한다.
PK가 바뀌게되면 특정 데이터를 식별하던 값이 바뀌어서 데이터를 관리하거나 사용하는 입장에서 혼돈이 올 수 있다.
즉: 주로 Auto Increment나 UUID로 설정을 많이한다.
3. FK: 두가지 개념에 대해서 저장을 할 때 한 가지 개념에 연관되는 다른 개념의 PK를 담아 두는 것 이때 담긴 PK가 FK라고한다.
즉 관계를 맺기 위한 쓰는 키이다.
무결성: 결점(모순되는 점)이 없도록 유지하는 특성
DB Naming 규칙
1. 테이블명, 컬럼명 -> 소문자로 작성
2. snack_case를 사용한다.
3. 축약어 사용하지 않는다.
4. sql문을 작성할 때 예약어만 대문자로 표현하라.(가독성을 위하여)
데이터베이스 설계
"중복 없애기"
상황 1:
외래키를 바뀔 수 있는 속성을 넣으면, 조회 수정 삭제 시에 모순이 생기게 된다. 중복되는 데이터가 많을 수 록 그 작업은 더 어렵게 된다.
-> 이상현상
즉: 데이터 중복으로 인해 일어나는 현상이 이상현상이고 이를 줄이기위해 중복을 없애는 작업을 정규화라고 한다.
*DB 설계 전체 과정*
1. 저장해야 하는 데이터를 확인하자.
ex) UI를 통해 대략적인 데이터를 확인하자.
2. 그룹핑해서 분류하기.
관련성 있는 것 끼리 분류하기.
그룹핑 된 하나의 그룹을 보고 -> Entity라고한다. => 약간 다르긴 한데 데이터베이스의 테이블이라고 보면 된다.
ex) 아이디, 패스워드, 이름, 이메일 -> 사용자.
영화이름, 영화에 출연한 배우, 영화 사용시간 -> 영화
게시글 제목, 게시글 내용, 게시글 생성시간 -> 게시글
3. 6가지 규칙 적용하면서 테이블 분리해나가기.
6규칙
규칙1 : 한칸에는 한가지 정보만 들어가도록 만들어라.
ex) 사용자 이름 | 이메일 : js123@example.com, jw123@example.com
count하거나 ,를 신경써야하기때문에 사용하면 안된다.
해결방안: 이메일을 테이블로 만들어서 분리해라.
한칸의 두가지 정보가 있을 경우 테이블을 새로 만들어서 1:N으로 만들어야한다는 것이다.
규칙2: 어떤 테이블에 FK를 넣어도 규칙1을 못지킬 때는 중간 테이블을 하나 더 만들어라.
위의 예시를 보았을 때 N에 FK를 넣었을 때 해결이 되었었는데. 안되는 경우가 있다. -> N:M
해결방안: 중간 테이블을 하나 더 만들면 된다.
엔티티 관계 파악 방법:
1.A가 B를 | B가 A에 의해
ex) 사용자가 이메일을 "소유한다"
이메일은 사용자에 의해 "소유 되어진다."
서비스의 관점에서 생각해야한다.
2. 하나의 A는 (하나의 or 여러개의) B를 | 하나의 B는 (하나의 or 여러개의) A에 의해
ex) 하나의 사용자는 여러개의 이메일을 소유한다.
하나의 이메일은 한 명의 사용자에 의해 소유되어진다.
3. 관계 판단
예제: 사용자, 프로필
1.
사용자는 프로필을 가진다.
프로필은 사용자에 의해 소유된다.
2.
한명의 사용자는 하나의 프로필을 가진다
하나의 프로필은 한명의 사용자에 의해 소유된다
3.
1:1이다.
팁:
1. 두가지의 관계의 동사를 찾는다 -> 소유한다, 가진다, 판다
2. 관계를 찾는다. 아래 방법 참고
하나의 A는 ? B
하나의 B는 ? A 의 수를 파악한 후 N:M을 설정한다.
팁:
1. N쪽에 무조건 FK 가 들어가야한다.
2. 1:1 관계는 아무곳에 FK를 넣어도 된다.
3. FK의 중복은 중복으로 보지않는다.
가짜중복과 진짜 중복을 구별해라.
실제서비스에서 A데이터의 값을 수정하면 B의 값도 수정해야하는가? -> 데이터 중복을 찾는 방법
하나의 컬럼을 수정했을 때 같은 값을 가진 같은 컬럼의 값도 변경을 해야하는가??
숨은 중복을 찾아라
하나의 데이터를 수정/삭제 할때 한 번의 수정을 더 해야할 경우를 말한다
ex) 합계가 컬럼안에 들어가서 하나의 테이블에 내용을 수정/삭제 했는데 다른 테이블의 합계를 같이 수정해줘야하는 경우
'DATABASE' 카테고리의 다른 글
태태개발일지 - 공유락, 베타락 (1) | 2024.12.12 |
---|---|
태태개발일지 - DB Lock (1) | 2024.10.23 |
태태개발일지 - Join (3) | 2024.10.13 |
태태개발일지 - DB 관계 데이터 모델링 (4) | 2024.10.06 |
태태개발일지(sql) (0) | 2023.12.15 |