CS 간략 정리
데이터베이스
데이터베이스란?
- 데이터를 체계화하고 통합 관리하는 시스템
- 데이터베이스는 게임 개발에서 필수적인 도구이다. 데이터베이스를 사용하면 게임 데이터를 효율적으로 저장하고 관리할 수 있으며, 게임 데이터를 안전하게 보호할 수 있다. 또한
데이터베이스를 사용하면 게임 데이터를 확장할 수 있다.
데이터베이스 종류
- RDB (Relational Database)
- SQL (Structured Query Language)
- 데이터베이스의 데이터를 관리하기 위해 설계된 프로그래밍 언어
- 관계형 데이터베이스의 관리 시스템에서 자료 검색 및 관리
- 데이터베이스에서 테이블 생성과 수정, 데이터 관리를 위헤 고안됨
- 종류
- MySql, Oracle, DB2 등등...
- NoSql
- SQL을 사용하지 않는 데이터베이스 시스템
- RDB와 다르게 다른 형식으로 데이터를 저장
- Document, key-value 등등..
- 종류
- MongoDb, Redis
RDB
- 테이블
- 쉽게 말하면 표 라고 생각하면 됩니다. (ex. 엑셀)
- 열
- 유일한 이름을 가지고 있는 값
- 학생 번호, 이름, 성별, 주소
- 열에 들어가는 값들은 각 데이터 형을 가지고 있음
- (int, string 등등..)
- 필드(Field), 속성(Attribute), 컬럼(column)
- 행
- 테이블의 가로줄을 의미한다. (학생 테이블 기준 학생 개개인)
- 레코드(Record), 튜플(Tuple), 로우(Low) 등등..
- 값
- 각각 열이 가지고 있는 값들
- 1, "김철수", "남자", "서울"
- 데이터 저장 방식
- B+ tree
- 과제
- 수강 등록 테이블
- 수강 등록 테이블에서 김철수를 찾고 싶다.
- select ‘회원 번호’, ‘회원 이름’ from ‘수강 등록 테이블’ where ‘회원 이름’ = “김철수
- 회원 번호 회원 이름
- 1 김철수
- select ‘회원 번호’, ‘회원 이름’ from ‘수강 등록 테이블’ where ‘회원 이름’ = “김철수
- 데이터 베이스를 듣고 있는 사람을 찾고 싶다.
- select ‘회원 이름’ from ‘수강 등록 테이블’ where ‘과목’ = “데이터베이스”
- 회원 이름
- 김영희
- select ‘회원 이름’ from ‘수강 등록 테이블’ where ‘과목’ = “데이터베이스”
- 데이터베이스를 포함하는 것을 찾고 싶다면?
- select ‘회원 이름’ from ‘수강 등록 테이블’ where ‘과목’ LIKE = “%데이터베이스%”
- 회원 이름
- 김영희
- 김멍멍
- select ‘회원 이름’ from ‘수강 등록 테이블’ where ‘과목’ LIKE = “%데이터베이스%”
- 수강 등록 테이블에서 김철수를 찾고 싶다.
데이터베이스 이상현상
- 데이터베이스 이상현상은 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용이다.
- 삽입 이상현상: 데이터를 삽입할 때 데이터 중복으로 인해 데이터베이스의 일관성이 깨질 수 있다
- 갱신 이상현상: 데이터를 수정할 때 데이터 중복으로 인해 데이터의 정확성이 떨어질 수 있드
- 삭제 이상현상: 데이터를 삭제할 때 데이터 중복으로 인해 데이터의 손실이 발생할 수 있다
- 데이터베이스 이상현상을 방지하기 위해서는 데이터베이스를 정규화해야 한다.
-
정규화는 데이터베이스를 설계하는 프로세스이며, 데이터베이스의 데이터 중복을 제거하고 데이터베이스의 일관성을 유지하는 것을 목표로 한다.
- 정규화 (Normal form)
- 이상현상이 있는 테이블을 분해해서 이상현상을 없애는 과정
- 1정규화 (1NF)
- 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되야아 함.
- 릴레이션의 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안됨.
- 2정규화
- 릴레이션이 제1정규형이며 부분 함수의 종속성을 제거한 형태.
- 부분 함수의 종속성 제거란 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말함.
- 분해할 때는 동등한 릴레이션으로 분해해야 하고, 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 함.
- 3정규화
- 릴레이션이 제2정규형이며 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태
- 이행적 함수 종속: A→B이고 B→C이면 A→C. C가 A에 이행적으로 함수 종속이 됨.
- 릴레이션이 제2정규형이며 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태
- BCNF
- 3정규형을 강화한 버전, 강한 3정규화
- BCNF는 릴레이션이 제3정규형이고, 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태.
- 결정자: 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소, ‘X→Y’일 때 X는 결정자, Y는 종속자이다.
- 4정규화
- 여러 컬럼이 하나의 컬럼을 종속되는 경우 분해해서 다중값 종속성을 제거
- 5정규화
- 조인에 의해서 종속성이 발생되는 경우 분해
- 특정 컬럼을 이 테이블에서 보관해도 되는걸까요?
- 상황에 맞게 해야됩니다.
- 사람마다 정규화를 보는 관점이 다르기 때문에 사람마다 케이스가 다를 수 있음
- 정규화의 장단점
- 정규화는 데이터베이스의 데이터 중복을 제거하고 데이터베이스의 일관성을 유지하는 것을 목표로 한다.
- 그러나 정규화를 하게 되면 데이터베이스의 크기와 복잡성이 증가할 수 있다.
- 또한, 데이터베이스의 조회 성능이 저하될 수 있으며, 데이터베이스의 유지보수가 어려워질 수 있다.
- 역정규화
- 특정 정규화를 만족하고 있던 테이블을 성능이나 관리 용의성을 더 높이기 위해 적용된 정규화를 제거하는 것
컴퓨터 구조
instruction dispatch
Instruction dispatch는 CPU가 명령어를 실행하는 첫 번째 단계입니다. 명령어 디스패치는 명령어를 실행할 수 있는 장치(예: 연산 장치, 메모리 장치)에 할당하는 것입니다. 명령어 디스패치는 CPU의 명령어 캐시에서 발생합니다. 명령어 캐시는 CPU가 실행할 수 있는 명령어를 저장하는 하드웨어 리소스입니다.
명령어 디스패치는 다음과 같은 단계를 거칩니다.
- 명령어를 명령어 캐시에서 가져옵니다.
- 명령어의 종류를 확인합니다.
- 명령어를 실행할 수 있는 장치를 찾습니다.
- 명령어를 장치에 할당합니다.
명령어 디스패치는 CPU의 성능을 향상시키는 데 중요한 역할을 합니다. 명령어 디스패치가 효율적이면 CPU는 더 많은 명령어를 더 빨리 실행할 수 있습니다.
Leave a comment