목차
챕터4. 데이터베이스
4.1 데이터베이스의 기본
- 데이터베이스 DB, DataBase
- 일정한 규칙, 혹은 규약을 통해 구조화 되어 저장되는 데이터의 모음
- 실시간 접근과 동시 공유 가능
- DBMS DataBase Management System
- 해당 데이터베이스를 제어, 관리하는 통합 시스템
- 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등 수행 가능
- 데이터베이스 위에 DBMS, 그 위에 응용 프로그램
- 예) MySQL 이라는 DBMS, 그 위에 응용 프로그램에 속하는 Node.js 나 php 프로그램
4.1.1 엔티티
- 엔티티 entity: 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사
- 예) 회원(엔티티) - 이름, 아이디, 주소, 전화번호 등의 속성
- 약한 엔티티, 강한 엔티티
- 예) A가 혼자 존재 X, B의 존재 여부에 따라 종속적
- → A: 약한 엔티티
- → B: 강한 엔티티
4.1.2 릴레이션
- 릴레이션 relation
- 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
- 엔티티에 관한 데이터를 릴레이션에 담아서 관리
- 관계형 데이터베이스에서 “테이블” 이라고 함
- NoSQL 데이터베이스 “컬렉션” 이라고 함
- 테이블과 컬렉션
- 데이터베이스의 종류: 관계형 데이터 베이스, NoSQL 데이터베이스
- 관계형 데이터 베이스 MySQL
- 구조: 레코드 - 테이블 - 데이터베이스
- NoSQL 데이터베이스 MongoDB
- 구조: 도큐먼트-컬렉션-데이터베이스
4.1.3 속성
- 속성 attribute
- 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보
- 서비스의 요구 사항을 기반으로 관리해야 할 필요가 있는 속성들만 엔티티의 속성이 됨
4.1.4 도메인
- 도메인 domain
- 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합
- 예) 성별(속성) - {남, 여}(집합=도메인)
4.1.5 필드와 레코드
- 데이터베이스에서 필드와 레코드로 구성된 테이블
- 회원이라는 entity
- memger라는 테이블
- 이름, 아이디 등의 속성
- name, ID, address등의 필드
- 레코드(=튜플): 테이블에 쌓이는 행 row 단위의 데이터
- 필드 타입
- 숫자 타입, 날짜 타입, 문자 타입
- 문자 타입
- CHAR: 고정 길이 문자열
- VARCHAR: 가변 길이 문자열
- 숫자 타입, 날짜 타입, 문자 타입
4.1.6 관계
- 여러 개의 테이블, 테이블은 서로 관계가 정의되어 있음
- 관계를 관계 화살표로 나타냄
- 1:1 관계, 1:N 관계, N:M 관계
4.1.7 키
- 테이블 간의 관계를 좀 더 명확하게
- 테이블 자체의 인덱스를 위해 설치된 장치
- 기본키, 외래키, 후보키, 슈퍼키, 대체키
- 슈퍼키: 유일성
- 후보키: 슈퍼키 안에 포함, 최소성 갖춤
- 대체키: 후보키 중에서 기본키로 선택되지 못한 키
- 유일성: 중복되는 값 x
- 최소성: 필드를 조합하지 않고 최소 필드만 써서 키를 형성
- 기본키 Primary Key, PK
- 유일성과 최소성을 만족하는 키
- 테이블의 데이터 중 고유하게 존재하는 속성
- 자연키 또는 인조키 중에 골라 설정
- 자연키: 중복되지 않는 것을 자연스레 뽑다가 나오는 키
- 인조키: 인위적으로 유저 아이디 부여, 오라클 sequence, MySQL auto increment 등으로 설정
- 외래키 Foreign Key, FK
- 다른 테이블의 기본키를 그대로 참조하는 값
- 개체와의 관계를 식별하는데 사용
- 중복되어도 괜찮
- 후보키 candidate key
- 기본키가 될 수 있는 후보들
- 유일성과 최소성을 동시에 만족하는 키
- 대체키 alternate key
- 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키들
- 슈퍼키 super key
- 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키
'Boaz > Computer Science' 카테고리의 다른 글
[CS 전공지식 #14] 챕터4-3. 트랜잭션과 무결정 (0) | 2025.02.24 |
---|---|
[CS 전공지식 #13] 챕터4-2. ERD와 정규화 과정 (0) | 2025.02.24 |
[CS 전공지식 #11] 챕터3-4. CPU 스케줄링 알고리즘 (0) | 2025.02.17 |
[CS 전공지식 #10] 챕터3-3. 프로세스와 스레드 (0) | 2025.02.17 |
[CS 전공지식 #9] 챕터3-2. 메모리 (0) | 2025.02.17 |