관계형 데이터베이스
구조화된 데이터는 하나의 테이블로 표현할 수 있다. 사전에 미리 정의된 테이블을 Relation이라고 하기 때문에 테이블을 사용하는 DB를 관계형 데이터베이스 (Relation database)라고 한다.
자주 쓰이는 용어들은 다음과 같다.
- Data: 각 항목에 저장되는 값
- Table / Relation: 사전에 미리 정의된 column의 데이터 타입대로 작성된 데이터가 row에 저장된다.
- Column (field) : 테이블의 한 열
- Record (tuple) : 테이블의 한 행에 저장된 데이터
- Key : 각 레코드를 구분할 수 있는 값 - 레코드마다 고유의 값을 갖는다 - Key는 아래의 2가지로 나뉜다.
- Primary Key (PK - 기본키)
- Foreign Key (FK - 외래키)
관계의 종류
많이 헷갈리지만 객체지향의 상속과 비슷한 느낌인 것 같다. 어느 쪽이 PK로 잡히는지, FK로 잡히는지 잘 확인해야 한다.
One-to-One
하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우

한 상품의 정보는 해당 상품으로만 연결되어있다. (예 - A상품과 A상품 정보) 이때 productID는 각각 PK로 지정된다.
One-to-Many
하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우

여기에서 Teachers는 상위 테이블이고 Classes는 하위 테이블의 관계가 된다. Classes.teacherID는 Foreign Key, Teachers.teacherID 는 Primary Key로 설정된다.
선생님은 0개 이상의 수업을 가르칠 수 있고, 수업은 하나의 선생이 맡아 가르친다.
Many-to-Many
여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우
다대다 관계를 위한 스키마를 디자인할 때에는 Join 테이블을 만들어 관리한다. 1:N 관계와 비슷하지만 양 방향에서 여러 개의 레코드를 저장할 수 있다.
주문과 상품의 관계에서, 여러개의 주문은 여러 상품을 담을 수 있고, 여러 상품도 여러개의 주문에 담길 수 있다. 아래의 예시는 여러 학생은 여러 수업을 등록할 수 있고, 여러 수업도 여러 학생에 의해 선택될 수 있다.

자기 참조 관계
Self-Referencing Relationship (자기 참조 관계)는 한 테이블 안에서의 관계를 나타낼 때 사용한다. (한 column에서 같은 테이블의 다른 column 참조한다던가)

예를 들어, Staff테이블에는 회사의 사원과 매니저의 정보가 들어있다. 하지만 매니저 또한 사원에 포함되고 있으므로 자기 참조의 관계가 된다.
DB 정규화
데이터베이스 정규화 (Database Nomalization)은 DB의 설계와 연관되어 있다. DB를 설계한다는 것은 데이터가 어떻게 저장될지에 대한 구조를 설계한다는 뜻과 같다.
DB의 정규화를 위해서는 아래 3개의 요소가 중요하다.
- Data Redundancy (데이터 중복)
- 데이터 중복은 실제 데이터와 동일한 복사본이거나 부분적 복사본을 뜻한다. 중복인 데이터가 있기에 복구할 때 수월할 것 같지만 다음과 같은 문제점을 지닌다.
- 일관적인 자료 처리의 어려움
- 저장 공간 낭비
- 데이터의 효율성 감소
- 데이터 중복은 실제 데이터와 동일한 복사본이거나 부분적 복사본을 뜻한다. 중복인 데이터가 있기에 복구할 때 수월할 것 같지만 다음과 같은 문제점을 지닌다.
- Data Integrity (데이터 무결성)
- 데이터 무결성은 데이터의 Life-Cycle 동안 정확성과 일관성을 유지하는 것을 의미한다.
- 입력된 데이터가 변질되지 않고 그대로 같은 상태로 사용 가능해야 한다.
- Anomaly (데이터 이상 현상)
- 데이터 이상 현상은 데이터에서 기대한 결과와 다른 이상 현상을 의미한다.
- Update anomaly
- 동일한 데이터가 여러 레코드에 걸쳐 있을 때 어느 데이터를 갱신해야 하는지에 대한 논리적인 일관성의 부재로 일어난다.
- 동일한 데이터가 여러 레코드에 걸쳐 있을 때 어느 데이터를 갱신해야 하는지에 대한 논리적인 일관성의 부재로 일어난다.
- Insertion anomaly
- 데이터를 삽입할 수 없는 경우
- Deletion anomaly
- 데이터의 특정 부분을 삭제할 때 의도하지 않은 다른 부분까지 함께 지워지는 것
- Update anomaly
- 데이터 이상 현상은 데이터에서 기대한 결과와 다른 이상 현상을 의미한다.
추가 자료 (CAP/PACELC)
PACELC theorem - Wikipedia
In theoretical computer science, the PACELC theorem is an extension to the CAP theorem. It states that in case of network partitioning (P) in a distributed computer system, one has to choose between availability (A) and consistency (C) (as per the CAP theo
en.wikipedia.org
'web > DB' 카테고리의 다른 글
SQL (0) | 2022.06.13 |
---|---|
MySQL 접속 에러 ERROR 2003 (HY000) (0) | 2022.06.10 |
DB/SQL 관련 명령어 (0) | 2022.06.09 |