본문 바로가기
AWS/MySQL

Mysql 데이터 유형을 고려할때, 설계의 핵심(정규화)

by leopard4 2023. 3. 7.

아래 내용은 스스로 학습한 내용을 바탕으로 작성한 주관적인 글이므로 맹신하지 마세요

개인참고용입니다

 

데이터타입 설정에 관한 지식

1.참조하는 외래키는 참조당하는 키와 데이터 타입이 같아야한다. ? 

꼭 그럴필요는 없지만 기본적으로 맞추는것이 좋다 이것은 잠재적 에러를 방지한다 

pk에 int형 un 을 설정했다면 pk를 참조하는 fk도 un(양의정수만)을 설정하는것이 상식이지않을까 ?

 

2.NOTNULL이 있을경우 속도가 좀더좋다는 걸 얼핏봣다?
근거는 null인지 체크하려고 한번의 연산?을 거치는 것같다  (아닐수도있음)
아무튼 꼭필요한 경우가 아니라면 null로 할 이유가 없다는것


3.float은 4바이트 decimal은 5바이트 
금융관련데이터는 decimal이나 numeric 을 이용해야한다 더정확한 실수를 나타내기 때문

4. timestamp 유형은 un를 체크할 이유가 없다 왜냐면 이는 숫자로 처리되는게 아닌
datetime 으로 처리되기 때문

5.varchar는 가변형으로 char보다 속도가 느리다 때문에 
고정된 길이라면 char로 한다

 

데이터 베이스 설계의 기본원리는


1.3단계의 정규화
핵심은 중복제거라는것

2.그리고 인덱스를 설정하면 
이진트리 알고리즘이 적용되서 검색의 속도가 향상되는것 

이진검색트리란 간단하게 좌는 작은숫자 우는 큰숫자로 되었기 때문에 비교가 빠르다

 

관계설정

 

1:1 (하나의 유저가 하나의 글을 쓸수있다)

1:n (하나의 유저가 많은글을 쓸수있다)

n:m (다대다 관계

N:M 관계는 서로가 서로를 1:N 관계, 1:M 관계로 갖고 있기 때문에,  (중요치않으므로 취소)

서로의 PK를 자신의 외래키 컬럼으로 갖고 있으면 된다.

일반적으로 N:M 관계는 두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블을 생성해서 관리한다)

이내용만 알면될듯

 

 

 

n:m에대해 자세히 나와있는 블로그 

https://velog.io/@gillog/DB-11-1N-NM-%EA%B4%80%EA%B3%84

 

 

 

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

 

alcohol_recipe_app_2

Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.

www.erdcloud.com