그림으로 배우는 데이터베이스(5-10~5-19)

prana·2022년 12월 24일
0

database

목록 보기
28/38
post-thumbnail

😈 오타 발견 p162

  • ER다이어그램으로 나타내다 : 밑에서 5번째 (entityt)-> entity

5-10 정규화

  • 데이터의 형태를 갖추다

1. 데이터를 관리하기 쉬운 구조로 만든다

정규화

  • 데이터베이스 안에 있는 데이터를 정리하는 순서.
  • 정규화를 진행하면 이렇게 불필요하게 발생하는 데이터 중복을 줄일 수 있고, 데이터를 관리하기 쉬운 구조로 만들 수 있다.

2. 정규화를 하는 장점

1) 데이터 유지보수가 편해진다

  • 같은 데이터가 여러 곳에 흩어져 있는 일이 없어지기 때문에 데이터를 변경하고 싶은 경우, 수정 범위를 최소한으로 좁힐 수 있다.

  • 수정을 하면서 누락이 발생하는 것을 방지하므로 데이터의 모순을 예방

2) 데이터 용량을 줄일 수 있다

3) 데이터의 범용성이 높아진다

  • 다른 여러 가지 시스템들과 연계나 데이터의 이행을 보다 원활하게 할 수 있다.

5-11 제1정규형

  • 항목을 중복시키지 않도록 한다

1. 데이터베이스에 입력 가능한 형태로 만드는 제1정규형

제 1정규형

릴레이션에 속하는 속성 값이 모두 원자값만으로 구성되어야 한다.

  • 원자값 : 더 이상 쪼개질 수 없는 단위를 말한다.
  • 하나의 데이터 안에서 반복적으로 나오는 항목이 배제되어 있다.

5-12 제2정규형

  • 다른 종류의 항목을 분할한다

1. 데이터를 관리하기 쉽게 하는 제2정규형

제2정규형

  • 제1정규형이면서, 기본키에 속하지 않은 속성 모두가
    기본키에 완전함수 종속인 정규형

  • 컬럼에 대응하여 값이 정해지는 종속 관계 컬럼이 있는 경우 해당 컬럼을 다른 테이블로 분리시킨다.

  • 행을 하나로 특정할 수 있는 컬럼과 종속관계인 것을 다른 테이블로 분리

5-13 제3정규형

  • 종속 관계에 있는 항목을 분할한다

1. 부정합을 예방하는 제3정규형

제3정규형

  • 제2정규형이면서, 이행적 함수 종속성을 제거한 정규형

  • 기본키 이외의 속성이 그 외 다른 속성을 결정할 수 없는 것
  • 제2정규형 후, 그 외의 종속 관계가 존재하는 컬럼을 다른 테이블로 나눔
  • 종속 관계를 제거함으로써 동일한 데이터가 여러 레코드에 걸쳐 등록되는 것을 막을 수 있고,

  • 나중에 정보를 편집할 때 하나의 값을 바꾸면 다른 대응되는 데이터 모두에 반영된다.

  • 제3정규형을 하면 종속관계가 없어져 데이터의 부정합이 일어나는 것을 막을 수 있다.


5-14 숫자형, 문자열형, 날짜형

  • 컬럼에 부여하는 설정을 결정한다

1. 컬럼의 데이터 타입, 제약, 속성을 결정한다

  • 1) 데이터 타입은 컬럼마다 저장하는 값의 포맷에 따라 숫자형, 문자열형, 날짜형 등을 부여

  • 2) 제약이나 속성과 관련하여 초깃값을 설정할 것인지 여부

  • 3) 데이터가 비어있는 상태를 허용하지 않도록 할 것인지 여부

  • 4) 다른 레코드와 같은 값을 넣을 수 없도록 부여할 것인지 여부

  • 5) 자동으로 순번을 저장할 것인지 여부

  • 6) 제약을 부여할 것인지 여부


5-15 명명규칙, 동의어(synonym), 동음이의어(homonym)

  • 테이블과 컬럼의 이름을 정한다

1. 알기 쉬운 테이블 이름이나 컬럼 이름

  • 한국어로 작성하면 특정 환경에서 동작하지 않거나 부주의한 에러가 발생할 수도 있기 때문에 특별한 사유가 없는 한 영어와 숫자를 사용

<명명규칙>

    1. 테이블 이름이나 컬럼 이름에는 영어와 숫자, 언더바(underbar)만을 사용

    1. 대문자를 쓰지 않고 모두 소문자로 통일하여 첫 글자에 숫자는 쓰지 않는다

    1. 테이블 이름은 복수형으로 한다

    1. 다른 사람이 이해하기 쉬운 이름으로 짓는다(줄임말은 피한다)

    1. 다른 테이블의 주 키와 join하기 위한 컬럼은 테이블 이름(단수형태)_id로 통일한다(user_id, item_id)등

    1. 컬럼에 어떤 종류의 값이 저장되어 있는지 알 수 있게 한다(boolean형의 경우 is_OOO, 날짜의 경우 OOO_at 등)

    1. 컬럼 이름에 OOO_flag는 피한다.(예를 들어 delete_flag가 아닌 is_delete로 하면 true일 때 삭제된 상태라는 것을 알 수 있음

2. 동의어와 동음이의어는 피한다

  • 동의어 : 다른 이름인데 같은 의미를 가진 단어
    ex) item이나 product 둘 중 하나로 통일

  • 동음이의어: 같은 이름인데도 다른 의미
    ex) 판매자와 구매자를 저장할 때 모두 user라고 하는 이름을 붙이면,
    구별할 수 없게 되어버려 혼란의 근원이 된다.

  • 이러한 경우에는 seller나 buyer 등의 이름을 생각할 수 있다.


5-16 요건의 추출

  • 책 리뷰 사이트의 테이블을 설계하는 예 ① - 완성 후의 이미지

5-17 엔티티와 속성 추출

  • 책 리뷰 사이트의 테이블을 설계하는 예 ② - 데이터 관계성 파악

1. 책 리뷰 사이트에 필요한 기능을 생각한다

  • 요구사항 정의를 통해 엔티티(Entity)와 속성(Attribute)을 추출한다.

  • 페이지에 기능으로 이용할 필요가 있는 정보고 기재해 나간다.

2. ER 다이어그램으로 나타내다

  • 관계를 정의하여 나타낸다.

5-18 테이블 정의, 중간 관계(매핑) 테이블

  • 책 리뷰 사이트의 테이블을 설계하는 예 ③ - 필요한 테이블 결정

1. ER 다이어그램을 기반으로 테이블을 생각한다

  • 요구사항 정의나 ER 다이어그램 등의 내용에 따라 필요한 테이블이나 컬럼을 정하는 테이블 정의를 하게 된다.

  • 만약 필요하다면 정규화를 실시하고 테이블을 분리하는 것 등도 검토한다.

⭐ 2. 다대다를 테이블로 표현한다

  • ER 다이어그램에서는 즐겨찾기 기능으로 인해 사용자와 책은 다대다 관계

  • 사용자 테이블과 책 테이블 사이에 즐겨찾기 테이블을 새로 만들고,

  • 양쪽 테이블의 ID를 저장하는 컬럼을 만들어두면, 양쪽 테이블을 연결 시킬 수 있다.

    한 사용자와 여러 개의 책, 한 권의 책에서 여러 사용자와 결합할 수 있어 다대다를 실현할 수 있다.


5-19 데이터 타입, 제약, 속성 결정

  • 책 리뷰 사이트의 테이블을 설계하는 예 ④ - 테이블 컬럼을 조정하다

1. 테이블 컬럼의 설정과 명명 규칙을 준비하다

  • 컬럼에 부여하는 데이터 타입과 제약, 속성을 결정한다.

  • 각각의 테이블에 id컬럼은 다른 레코드 값과 중복되지 않도록 주 키로 하고 자동으로 순번을 부여하도록 함

  • 다른 테이블과 관계를 맺기 위해 ID를 저장하는 컬럼은
    테이블명(단수계열)_id로 통일하고 외부키로 했다.

  • books 테이블 등록일자를 저장하는 컬럼은 날짜가 저장되는 컬럼이라는 것을 알 수 있도록 OOO_at으로 되어있다.

2. 데이터베이스 설계 지식을 활용하기 위해

  • 소규모의 데이터베이스라면 중간 과정을 생략하거나 익숙해지면,

  • 제1정규형, 제2정규형……이라고 하는 것을 의식하지 않아도 자연스럽게 정규화된 테이블 설계를 할 수 있을 것이다.

  • 프로젝트 규모나 만드는 시스템, 자신의 스킬(skill)에 따라 설계 수단을 구분하여 사용한다.

0개의 댓글

관련 채용 정보