TIL 58 | 물리적 모델링

CHAEIN·2021년 8월 30일
0

물리적 모델링

데이터 베이스에 실제로 저장하는 내용에 최대한 가깝게 데이터 모델을 만드는 과정

네이밍

  • 단수 / 복수 정하기
    복수는 person => people, ox => oxen처럼 일관성이 떨어지기 때문에 단수를 사용하면 일관성을 유지할 수 있다는 단점이 있다. 반면 복수단어는 테이블이 하나가 아니라 여러개의 데이터를 저장하는 집합이라는 점에서 의미적으로 더 자연스럽다는 장점이 있다. 일반적으로 컬럼 이름은 단수로 사용한다.

  • 대문자 / 띄어쓰기 정하기
    user_id, UserId, userId처럼 대소문자와 띄어쓰기 규칙도 정해야한다.

  • 줄임말 정하기
    social_security_number / ssn 줄임말을 사용하지 않는 경우 일일히 모두 타자를 쳐야한다는 점에서 단점이 있고 줄임말을 사용하는 경우가 의미가 명확하지 않다는 단점이 있다.

네이밍에서 가장 중요한 점은 어떤 규칙을 정하는 지보다 정해진 규칙을 잘 따르는 것이다.

데이터 타입

  • 갈 컬럼이 어떤 데이터를 저장하는지에 대한 내용
  • 데이터 베이스의 가장 기본적인 제약 사항(데이터 정확성을 지켜주는 역할을 한다)

데이터 타입을 잘 정해야 되는 이유

  • 데이터 정확성을 지키기 위해
  • 데이터베이스 연산/함수들을 제대로 활용하기 위해
  • 데이터베이스 용량을 최적화하기 위해

데이터베이스는 저장된 데이터의 용량이 클수록 느려진다. 따라서 똑같은 데이터를 저장하되, 용량은 가장 작게 사용하는 것이 좋다.

각 데이터 타입은 저쟝 용량이 다르다. 예를들어 int같은 경우 -2,147,483,648 ~ 2,147,483,648 정수만 저장할 수 있는데 이때 모든 int는 그 크기와 상관 없이 4Byte의 용량을 차지한다. int 종류로는 Tinyint, Smallint, Bigint가 있고 각각 1, 2, 8바이트를 차지한다.

만약 age 데이터를 저장하게 된다면 0~255사이 자연수를 쓸 수 있고 가장 적은 용량을 차지하는 tinyint를 사용하는게 효율적이다.

MySQL 데이터타입 정리

제약 조건

제약조건이란 데이터 정확성을 지키기 위해 항상 특정 조건을 만족시키는 데이터 값만 저장 및 없데이트 할 수 있도록 설정한 조건들을 의미한다.

물리적 모델링 범위에서는 제약 조건들을 실제 데이터베이스에 걸어주는 게 아니라 찾아내야 한다. 이 단계에서는 비즈니스 룰을 사용하거나, 저장하려는 데이터의 성질을 파악해서 각 테이블, 또는 컬럼에 대한 제약 조건들을 찾아낸다.

제약 조건은 ERM에 표현하기 힘들기 때문에, 따로 종이나 메모 같은 곳이 이 내용들을 하나씩 적어준 후, 실제로 데이터베이스에 계획된 내용을 반영할 때 SQL 또는 ORM을 사용하면 된다.

0개의 댓글