데이터베이스를 설계한다는 것은 스키마 내에 테이블, 인덱스 뷰등의 데이터베이스 객체를 정의하는 것을 말합니다.
테이블 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것입니다.
논리명과 물리명
자료형
고정길이와 가변길이
기본키
테이블의 각 레코드를 구분 할 수 있는 값입니다. 각 레코드마다 고유한 값을 가집니다. 기본키와 외래키가 있습니다.
ER 다이어그램은 개체 간의 관계를 표현한 것입니다.
-entity
개체는 테이블 또는 뷰를 말합니다.
하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우
하나의 레코드가 서로 다른 여러개의 레코드와 연결된 경우
여러개의 레코드가 다른 여러 개의 레코드와 관계 있는 경우
join 테이블을 만들어 관리합니다.
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개");
주문번호 날짜 고객 이름 연락처 상품코드 상품명 개수
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 정규화는 데이터가 중복되는 부분을 찾아내어 테이블로 분할해 나갑니다. 이때 기본키에 의해 특정되는 열과 그렇지않은 열로 나누는 것으로 정규화가 이루어집니다.
주문번호 상품코드 상품명 개수
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
중복하는 부분을 찾아내어 테이블을 분할하는 수법, 제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