SQL : 데이터베이스 설계

Vorhandenheit ·2021년 12월 20일
1

Database

목록 보기
6/28

데이터베이스 설계

1.데이터 베이스 설계

(1) 데이터베이스

데이터베이스를 설계한다는 것은 스키마 내에 테이블, 인덱스 뷰등의 데이터베이스 객체를 정의하는 것을 말합니다.
테이블 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것입니다.

  • 논리명과 물리명

  • 자료형

  • 고정길이와 가변길이

  • 기본키
    테이블의 각 레코드를 구분 할 수 있는 값입니다. 각 레코드마다 고유한 값을 가집니다. 기본키와 외래키가 있습니다.

(2) ER 다이어그램 (Entitiy Relationship)

ER 다이어그램은 개체 간의 관계를 표현한 것입니다.

-entity
개체는 테이블 또는 뷰를 말합니다.

관계 종류

  • 1: 1 관계

하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우

  • 1: N 관계

하나의 레코드가 서로 다른 여러개의 레코드와 연결된 경우

  • N: M 관계

여러개의 레코드가 다른 여러 개의 레코드와 관계 있는 경우
join 테이블을 만들어 관리합니다.

  • self referencing 관계 (자기참조)


2. 정규화

  • 테이블을 올바른 형태로 변경하고 분할하는 것을 정규화라고 합니다.
  • 정규화란 데이터베이스의 테이블을 규정된 올바른 형태로 개선해나가는 것입니다.
  • 정규화는 중복하거나 반복되는 부분을 찾아내서 테이블을 분할하고 기본키를 작성해 사용하는 것을 기본 개념으로 삼습니다. '하나의 데이터는 한 곳에 있어야 한다' 규칙에 근거

(1) 정규화

CREATE TABLE order_table(
	주문번호 INTEGER NOT NULL,
	날짜 DATE,
	고객이름 VARCHAR(10),
	연락처 VARCHAR(11),
	주문상품 VARCHAR(100)
	);
	
INSERT INTO order_table VALUES(1, "2020-01-01", "박상민", "01012345678", "0001 OO 1개, 0002 XX 10개");
INSERT INTO order_table VALUES(2, "2020-01-02", "강윤석", "01011112222", "0001 OO 2개, 0002 XX 3개");
INSERT INTO order_table VALUES(3, "2020-02-01", "구본효", "01022223333", "0001 OO 3개, 0003 YY 1개");

(2) 제 1 정규형

  • 하나의 셀에는 하나의 값만 저장되므로 테이블화 해야합니다.
  • 제 1 정규화에서는 테이블 분할과 기본키 지정이 이루어집니다.
주문번호	날짜	고객 이름	연락처	상품코드	상품명	개수
1	2020/01/01	박상민	01012345678	0001	OO	1
1	2020/01/01	박상민	01012345678	0002	XX	10
2	2020/01/02	강윤석	01011112222	0001	OO	2
2	2020/01/02	강윤석	01011112222	0002	XX	3
3	2020/02/01	구본효	01022223333	0001	OO	3
3	2020/02/01	구본효	01022223333	0003	YY	1
주문번호	날짜	고객이름	연락처
1	2020/01/01	박상민	01011112222
2	2020/01/02	강윤석	01011112222
3	2020/02/01	구본효	01022223333

(2) 제 2 정규형

제2 정규화는 데이터가 중복되는 부분을 찾아내어 테이블로 분할해 나갑니다. 이때 기본키에 의해 특정되는 열과 그렇지않은 열로 나누는 것으로 정규화가 이루어집니다.

주문번호	상품코드	상품명	개수
1	0001	OO	1
1	0002	XX	10
2	0001	OO	2
2	0002	XX	3
3	0001	OO	3
3	0003	YY	1

change

상품코드	상품명
0001	OO
0002	XX
0003	YY

(3) 제 3 정규형

중복하는 부분을 찾아내어 테이블을 분할하는 수법, 제2정규화는 기본키에 중복이 없는지 조사했지만 제3 정규화는 기본키 이외의 부분에서 중복이 없는지를 조사

주문번호	날짜	고객번호
1	2020/01/01	1
2	2020/01/02	2
3	2020/02/01	1

고객번호	성멍	연락처
1	박상민	01012345678
2	강윤석	01011112222
  • Data Redundancy
    데이터 중복은 실제 데이터의 동일한 복사본이나, 부분적인 복사본을 뜻함

  • Data Integrity
    데이터 무결성은 데이터의 수명 주기 동안 정확성과 일관성을 유지하는 것을 뜻함

  • Anomaly
    데이터 이상 현상은 갱신 이상, 삽입 이상, 삭제 이상

-갱신이상(Update Anomaly)
갱신 이상은 여러 행에 걸쳐 동일한 데이터가 있을 때, 어떤 행을 갱신해야 하는지 논리적인 일관성이 없는 경우에 발생합니다.

-삽입이상(Insertion Anomlay)
데이터를 삽입하지 못하는 경우 가리킴
수업을 Null 값으로 지정하지않는 이상, 담당 수업이 있어야만 테이블에 추가할 수 있는 이상 현상이 발생

-Deletion Anomaly
삭제 이상은 데이터의 특정 부분을 지울 때 의도치 않게 다른 부분도 함께 지우는 이상 현상입니다.

출처

https://datanetworkanalysis.github.io/2020/03/06/sql_normalization

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글