코드온 CS 스터디
학습 기간
2024.10.02.(수) ~ 08.(화)
4주차 학습 주제
- 데이터베이스 기본
- 엔터티, 릴레이션, 속성: 데이터베이스의 기본 구성 요소.
- 키: 기본 키, 후보 키, 대체 키의 개념과 역할.
- ERD와 정규화
- ERD: ERD(엔터티 관계 다이어그램)의 중요성과 활용 방법.
- 정규화 과정: 1차 정규화부터 3차 정규화까지의 기본 개념.
1. 데이터베이스 기본
1.1. 엔터티, 릴레이션, 속성
- 데이터베이스(Database, DB): 현실 세계의 데이터를 구조적으로 저장하고 관리하는 시스템이다.
- 엔터티(Entity): 현실 세계에서 독립적으로 존재하는 객체나 개체로 데이터베이스에서 테이블로 표현한다.
e.g.) 학생, 수업, 교수 등 - 릴레이션(Relation): 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.
관계형 데이터베이스에서 릴레이션은 테이블(Table)을 의미한다.
테이블은 행과 열로 구성되며, 각각의 행은 하나의 레코드(튜플), 열은 속성(컬럼)이다. - 속성(Attribute): 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보이다.
엔터티가 가진 특정 특성이나 정보로 테이블의 열(컬럼)에 해당한다.
e.g.) 학생의 이름, 학번, 생년월일 등
1.2. 키(Key)
데이터베이스에서 중복된 데이터를 허용하지 않기 위한 기준이 되는 속성이다.
주로 테이블 내에서 각 레코드를 유일하게 식별할 수 있도록한다.
테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치이다.
- 기본 키(Primary Key, PK): 테이블 내의 각 행을 고유하게 식별하는 데 사용되는 하나 이상의 속성이다.
중복을 허용하지 않으며, 반드시 값이 존재해야하고 Null을 허용하지 않는다.
e.g.) 학생 테이블의 학번 - 외래 키 (Foreign Key, FK): 한 테이블에서 다른 테이블의 기본 키를 참조하는 키이다.
두 테이블 간의 관계를 설정하며, 데이터의 무결성을 보장하는 데 중요한 역할을 한다.
다른 테이블의 기본 키와 매핑되므로, 참조 무결성을 유지하기 위해 기본 키와 같은 값을 가진다. - 후보 키(Candidate Key): 기본 키로 선택될 수 있는 후보 속성들이다.
테이블에서 유일성을 만족하는 여러 속성들이 있을 수 있으며, 그중 하나가 기본 키로 사용된다. - 대체 키(Alternate Key): 후보 키 중에서 기본 키로 선택되지 않은 나머지 키이다.
유일성을 보장하지만, 기본 키로 사용되지 않은 속성이다. - 슈퍼 키(Super Key): 각 레코드에서 유일하게 식별할 수 있는 하나 이상의 속성들의 집합이다.
슈퍼 키에는 기본 키도 포함될 수 있으며, 기본 키는 슈퍼 키의 특수한 형태이다.
단, 최소성을 만족할 필요가 없으며, 중복된 속성을 포함할 수 있습니다.
2. ERD와 정규화
2.1. ERD
ERD(Entity-Relationship Diagram)는 데이터베이스 설계를 시각적으로 표현하는 도구이다.
데이터베이스 구조를 쉽게 이해할 수 있게 도와주며 엔터티, 속성 및 엔터티 간의 관계를 표현한다.
- 엔터티(Entity): 직사각형으로 표현되며, 데이터베이스에서 관리하고자 하는 개체를 나타낸다.
e.g.) 학생, 교수 등 - 속성(Attribute): 원으로 표현되며, 엔터티의 특정 정보를 나타낸다.
e.g.) 학생의 이름, 학번 등 - 관계(Relationship): 다이아몬드 형태로 표현되며, 엔터티 간의 상호작용을 나타낸다.
관계는 1:1, 1, N과 같은 관계 유형으로 나뉜다.
2.2. ERD의 중요성
- 시스템의 요구 사항을 기반으로 작성되며, ERD를 기반으로 데이터 베이스를 구축한다.
- 데이터베이스 구축 이후 디버깅, 비지니스 프로세스 재설계가 필요한 경우 설계도 역할을 담당한다.
2.3. ERD의 단점
비정형 데이터를 충분히 표현할 수 없다.
비정형 데이터란?
비구조화 데이터를 의미하며, 미리 정의된 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보
2.4. ERD의 활용 방법
- 데이터베이스 설계 초기 단계에서 각 엔터티와 그들 간의 관계를 명확하게 정의하는 데 사용한다.
- 복잡한 데이터 구조를 시각적으로 이해하고, 각 엔터티가 어떤 속성을 가지고 있으며 어떻게 연결되는지 확인할 수 있다.
- 시스템의 요구 사항 분석과 데이터 구조 설계에서 중요한 역할을 한다.
2.2. 정규화 과정
데이터베이스 설계에서 데이터의 중복을 최소화하고, 이상 현상(데이터 불일치, 삭제 이상, 삽입 이상 등)을 방지하기 위한 과정이다.
여러 단계로 이루어지며, 각 단계는 특정 기준을 충족합니다.
정규형 원칙
- 같은 의미를 표현하는 릴레이션이나 더 개선된 구조로 표현해아한다.
- 자료의 중복성은 감소해야한다.
- 독립적인 관계는 별개의 릴레이션으로 표현해야한다.
- 각각의 릴레이션은 독립적인 표현이 가능해야한다.
1차 정규화(1NF: First Normal Form)
- 테이블 내의 모든 속성 값이 원자값(Atomic Value)을 가져야한다.
각 속성은 하나의 값을 가져야 하며, 여러 개의 값을 가질 수 없다. - e.g.) 전화번호의 속성이 여러 개의 번호를 가진다면, 개별적으로 분리하여 테이블을 설계
2차 정규화(2NF: Second Normal Form)
- 1차 정규화를 만족하면서, 부분 함수 종속성을 제거한다.
- 기본 키가 여러 개의 속성으로 구성된 경우, 일부 속성에만 종속된 비키 속성(기타 속성)을 제거한다.
- e.g.) 학생의 학번과 수업 코드가 기본 키라면, 학생의 이름은 학번에만 종속되므로 별도의 테이블로 분리
3차 정규화(3NF: Third Normal Form)
- 2차 정규화를 만족하면서, 이행적 함수 종속(Transitive Dependency)을 제거한다.
- 비키 속성이 다른 비키 속성에 종속되는 경우, 이를 제거하여 독립된 테이블로 나눈다.
- e.g.) 부서 테이블에서 부서 이름이 부서 번호에 종속되고, 부서 위치가 부서 이름에 종속된다면,
부서 위치는 부서 번호에 직접적으로 종속되도록 테이블을 분리
참고자료
- https://velog.io/@gkqls813/면접을-위한-CS-전공지식-노트-운영체제-메모리
- https://inpa.tistory.com/entry/DB-📚-데이터-모델링-1N-관계-📈-ERD-다이어그램
- https://mslilsunshine.tistory.com/164
- https://velog.io/@kim_truee/ERD
'[9oorm x kakao] 구름톤 유니브 3기 > [구름톤 유니브] KDT 스터디' 카테고리의 다른 글
[코드온 - 4주차] 프로세스와 스레드 (2) | 2024.10.01 |
---|---|
[코드온 - 3주차] 운영체제 기초 및 메모리 관리 (0) | 2024.09.24 |
[코드온 - 2주차] 네트워크의 기초와 TCP/IP 모델 (1) | 2024.09.24 |
[코드온 - 1주차] 디자인 패턴과 프로그래밍 패러다임 (3) | 2024.09.24 |