MariaDB
3일차
ERD
- ERD(Entity Relationship Diagram)
- 엔티티와 이들 간의 관계를 알기 쉽게 약속된 도형을 사용하여 일목요연하게 그림으로 표현
- 관계(Relationship)
- 엔티티 간에 존재하는 업무의 상호 연관성으로 해당 엔티티와 관련된 업무가 수행되는 규칙을 의미
- 속성(Attribute)
- 엔터티와 관계의 성질을 나타내는 쪼갤 수 없는 정보의 단위로 엔티티에 저장되는 개체 집합의 특성을 설명하는 항목
정규화
-
제1정규형(1NF 또는 최소형)은 데이터베이스 정규화에서 사용하는 정규형중 하나이다.
관계형 데이터베이스의 테이블이 1NF이면 최소한 테이블은 관계이며, 중복되는 항목이 없어야 한다.
Customer ID First Name Surname Telephone Number 123 Robert Ingram 555-861-2025 456 Jane Wright 555-403-1659 555-776-4100 789 Maria Fernandez 555-808-9633 - 데이터가 중복으로 들어갔다. 이를 해결하겠다고 다음과 같이 무작정 항목을 늘리면 어떻게 될까?
Customer ID First Name Surname Tel. No. 1 Tel. No. 2 Tel.No.3 456 Jane Wright 555-403-1659 555-776-4100 555-403-1659 - 당장은 해결된 것처럼 보이지만 전화번호가 4개, 5개인 사람은 다시 문제가 될 것이다. 이를 근본적으로 해결해보자.
Customer Name
Customer ID First Name Surname 123 Robert Ingram 456 Jane Wright 789 Maria Ferna
Customer Telephone Number
Customer ID | Telephone Number |
---|---|
123 | 555-861-2025 |
456 | 555-403-1659 |
456 | 555-776-4100 |
789 | 555-808-9633 |
- 이처럼 중복되는 데이터를 제거하는 작업이 제 1정규화이다.
-
제2 정규형(2NF)는 데이터베이스 정규화에서 사용하는 정규형중 하나로, 에드거 F. 커드가 1971년에 정의하였다.
제 1 정규형(1NF)인 테이블이 제2 정규형을 충족시키는 필요충분조건은 다음과 같다:
- 후보 키 K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K 전체를 참조해야만 하는 경우 1NF 테이블은 2NF이다.
종업원 기술 근무지 Jones Typing 114 Main Street Jones Shorthand 114 Main Street Jones Whittling 114 Main Street Bravo Light Cleaning 73 Industrial Way Ellis Alchemy 73 Industrial Way Ellis Flying 73 Industrial Way Harrison Light Cleaning 73 Industrial Way -
이 테이블을 보았을 때 불필요한 정보가 한 눈에 들어오는가? 동명이인이 없다는 가정하에 종업원 이름이 Jones이면 그 사람의 근무지는 무조건 114 Main Street이다.
따라서 근무지라는 Column이 존재하는 것은 굉장히 비효율적이라 할 수 있다. 다음과 같이 고쳐보자!
종업원
종업원 | 근무지 |
---|---|
Jones | 114 Main Street |
Bravo | 73 Industrial Way |
Ellis | 73 Industrial Way |
Harrison | 73 Industrial Way |
종업원의 기술
종업원 | 기술 |
---|---|
Jones | Typing |
Jones | Shorthand |
Jones | Whittling |
Bravo | Light Cleaning |
Ellis | Alchemy |
Ellis | Flying |
Harrison | Light Cleaning |
-
제3 정규형이란 데이터베이스 정규화의 세 번째 단계로, 다음 조건을 만족해야 한다:
-
테이블이 제2 정규형을 만족하고,
-
테이블 내의 모든 속성이 기본 키에만 의존하며, 다른 후보 키에 의존하지 않는다.
즉 제3 정규형은 추이 종속이 존재하지 않음을 요구한다.
대회 연도 우승자 우승자 생년 월일 Des Moines Masters 1998 Chip Masterson 14 March 1977 Indiana Invitational 1998 Al Fredrickson 21 July 1975 Cleveland Open 1999 Bob Albertson 28 September 1968 Des Moines Masters 1999 Al Fredrickson 21 July 1975 Indiana Invitational 1999 Chip Masterson 14 March 1977 - 제 2정규형과 뭔가 비슷하다. 방금 한 것처럼 테이블을 분리시켜보자.
대회 우승자
대회 연도 우승자 Des Moines Masters 1998 Chip Masterson Indiana Invitational 1998 Al Fredrickson Cleveland Open 1999 Bob Albertson Des Moines Masters 1999 Al Fredrickson Indiana Invitational 1999 Chip Masterson 우승자 생년 월일
우승자 우승자 생년 월일 Chip Masterson 14 March 1977 Al Fredrickson 21 July 1975 Bob Albertson 28 September 1968 - 제2 정규화와 대체 무슨 차이가 있냐고 반문 할 수 있다. 제 2정규화를 회상해보자. 종업원 테이블의 경우 (종업원, 기술)이
Primary Key
였다.
다시 제 3정규형을 보면 조금 다르다. 대회 우승자의 경우 (대회,연도)가
Primary Key
이다. 따라서 파생된 테이블이 어떤Key
를 자신의Primary Key
로삼느냐에 따라 제 2정규형과 제 3정규형을 나눌 수 있다.
-
실습
- 새로운 프로젝트를 시작하기 전 ERD를 하나 설계하고자 한다.
- 웹 커피숍을 만드는 프로젝트로 커피숍 사이트를 참고하여 만들어보고자 한다.
SHOP
- SINGLE ORIGINS
- BLEND
- EASY COFFEE
커피의 종류는 위와 같이 4종류가 존재한다. 이제 커피테이블을 구상해보자
커피
커피 이름 | 가격 | 적립금 | 커피 이미지 경로 | 커피 종류 코드 |
---|---|---|---|---|
코체레 하마 G1, 에티오피아 | 16000 | 800 | md_images/코체레_하마 | 0 |
시다마 디카페인, 에티오피아 | 16000 | 800 | md_images/시다마_디카페인 | 0 |
정글에스프레소(JUNGLE ESPRESSO) | 16000 | 800 | md_images/정글에스프레소 | 1 |
메리제인(MARY JANE) | 18000 | 900 | md_images/메리제인 | 1 |
메리제인 드립백(6개입) | 11500 | 500 | md_images/메리제인_드립백 | 2 |
메리제인 콜드브루(500ml 원액) | 14000 | 700 | md_images/메리제인_콜드브루 | 2 |
ACR 월넛 우드 트레이 & 미니 | 18000 | 900 | md_images/우드_트레이 | 2 |
커피 종류
커피 종류 코드 | 커피 종류 명 |
---|---|
0 | SINGLE ORIGINS |
1 | BLEND |
2 | EASY COFFEE |
사용자
사용자ID | 이름 | 휴대폰번호 | 이메일 |
---|---|---|---|
1 | son | 010-1234-5678 | sohn@gmail.com |
2 | kim | 010-2345-5678 | kim@gmail.com |
3 | park | 010-3456-5678 | park@naver.com |
구매
구매ID | 사용자ID | 주소 | 결제수단 |
---|---|---|---|
1 | 1 | seoul | 카드 |
2 | 2 | busan | 카드 |
3 | 3 | daegu | 카드 |
4 | 1 | incheon | 현금 |
구매상세
구매ID | 커피 이름 | 주문수량 |
---|---|---|
1 | 정글에스프레소(JUNGLE ESPRESSO) | 1 |
1 | 메리제인(MARY JANE) | 1 |
2 | 메리제인 드립백(6개입) | 5 |
3 | 시다마 디카페인, 에티오피아 | 1 |
2 | ACR 월넛 우드 트레이 & 미니 | 1 |
4 | 메리제인(MARY JANE) | 10 |