Database(DB) : 데이터의 저장소
- 데이터베이스는 무조건 하드디스크에 저장될 수 밖에 없음
DBMS(Database Management System) : 데이터베이스 관리 시스템
관계형DB : 데이터의 종속성을 관계로 표현하는 것이 특징
관계형 DB = 2차원 DB → 테이블로 이루어짐
- Column(열) = 필드 = 속성 : 데이터의 제목(분류) , 유일한 이름을 가진다
- Row(행) = 튜플 = 레코드 : 관계된 데이터들의 묶음
- DB의 모델링에 따라서 사용하는 DBMS도 바뀐다. 관계형DB는 RDBMS를 사용하여 관리함
datetime을 사용하면 YYYY-MM-DD HH:mm:ss 형태로 저장되고 데이터 값을 입력해 주어야 한다.
timestamp는 1970/1/1의 기준으로 몇 초가 지났는지 기록됨
년도 표시에서 RR은 0~49까지는 현 세기를 나타내고 50~99까지는 전 세기의 년도를 나타냄
사용하는 이유는 년도를 표시할 때 년도에서 YY 두 자리만 사용할 때 YY/MM/DD 라는 형태라고 치고 98년도를 치면 DB에서는 2098년인지 1998년인지 인지할수없기 때문에
→ 이럴때 RR/MM/DD 형식에 97년도를 입력하게되면 DB내부에서는 1997년으로 인식됨
Primary key : NOT NULL, UNIQUE(고유성)
- UNIQUE : 학번이나 휴대폰 번호처럼 고유해야한다(중복이 안됨), 유니크 인덱스가 만들어짐
- PK는 테이블 당 하나만 가질 수 있다.
- 관계형 DB는 이론 상 모든 테이블에 하나의 기본 키를 가져야 한다.
파일 시스템 : 디스크 파티션을 관리하는 하나의 체계
- 단점 : 응용 프로그램 별로 파일을 유지하여 같은 데이터의 중복성이 발생하여 디스크의 공간을 낭비할 수 있음
DBMS는 DB에 데이터를 통합하여 관리하기에 중복 문제를 쉽게 해결할 수 있다.
- 만약 DB에서 중복이 발생하면 발생하는 치명적인 단점은 디스크에 있는 중복이 정보를 보여줄 때 메모리에 올려서 확인하기 때문에 결국에는 메모리의 공간 낭비로도 이어짐
- 디스크의 공간 낭비에서 메모리의 공간 낭비로도 이어짐
하나의 종속성을 가지고 있는 컬럼이 또 종속성을 가지고 있으면 잘라야됨 - 제3정규화
학생 테이블
학번 | 이름 | 학과 번호 | 학과 이름 |
001 | xxx | 1 | 컴퓨터정보 |
002 | xxa | 2 | 컴퓨터공학 |
003 | aan | 1 | 컴퓨터정보 |
↓
학과 테이블
학과 번호 | 학과 이름 |
1 | 컴퓨터정보 |
2 | 컴퓨터공학 |
3 | 드론학과 |
↓
학생 테이블에서 중속성이 있는 컬럼 제거
학번 | 이름 | 학과 번호 |
001 | xxx | 1 |
002 | xxa | 2 |
003 | aan | 1 |
학생 테이블에 학과 번호와 학과 이름은 서로 종속적인 관계이다, 이 부분에서 중복성 이슈가 발생함
→ 학과 번호만 남기고 학과 이름은 학과 테이블을 따로 만들어 조인을 시켜주어 중복성을 줄였다
단 , 지나친 정규화는 많은 조인을 만들어 성능 상 단점이 발생함 → 성능을 위해 반정규화 하는 경우도 있음
반정규화 : 하나 이상의 테이블에 데이터를 중복해 배치하는 최적화 기법
- 시스템의 성능 향상 또는 개발자의 편의성을 위해 의도적으로 정규화 원칙을 위배하는 행위
- 하지만 반정규화 동작 때문에 데이터 일관성 유지가 어려울 수 있다
데이터베이스의 처리속도에 가장 큰 영향을 미치는 것은 디스크 I/O 동작이다 하지만 데이터를 저장하는 하드디스크는 CPU에 비해 현저히 느리기 때문에 데이터베이스는 캐시 기술을 이용해 메모리에 올려서 처리하는 구조를 가지고 있음.
Cache : 가까운 미래나 다음 작업에 필요한 데이터를 미리 가져다 놓음
- Cache는 CPU안의 레지스터의 속도에 범접함 → 데이터 처리속도가 현저히 빨라짐
Database(DB) : 데이터의 저장소
- 데이터베이스는 무조건 하드디스크에 저장될 수 밖에 없음
DBMS(Database Management System) : 데이터베이스 관리 시스템
관계형DB : 데이터의 종속성을 관계로 표현하는 것이 특징
관계형 DB = 2차원 DB → 테이블로 이루어짐
- Column(열) = 필드 = 속성 : 데이터의 제목(분류) , 유일한 이름을 가진다
- Row(행) = 튜플 = 레코드 : 관계된 데이터들의 묶음
- DB의 모델링에 따라서 사용하는 DBMS도 바뀐다. 관계형DB는 RDBMS를 사용하여 관리함
datetime을 사용하면 YYYY-MM-DD HH:mm:ss 형태로 저장되고 데이터 값을 입력해 주어야 한다.
timestamp는 1970/1/1의 기준으로 몇 초가 지났는지 기록됨
년도 표시에서 RR은 0~49까지는 현 세기를 나타내고 50~99까지는 전 세기의 년도를 나타냄
사용하는 이유는 년도를 표시할 때 년도에서 YY 두 자리만 사용할 때 YY/MM/DD 라는 형태라고 치고 98년도를 치면 DB에서는 2098년인지 1998년인지 인지할수없기 때문에
→ 이럴때 RR/MM/DD 형식에 97년도를 입력하게되면 DB내부에서는 1997년으로 인식됨
Primary key : NOT NULL, UNIQUE(고유성)
- UNIQUE : 학번이나 휴대폰 번호처럼 고유해야한다(중복이 안됨), 유니크 인덱스가 만들어짐
- PK는 테이블 당 하나만 가질 수 있다.
- 관계형 DB는 이론 상 모든 테이블에 하나의 기본 키를 가져야 한다.
파일 시스템 : 디스크 파티션을 관리하는 하나의 체계
- 단점 : 응용 프로그램 별로 파일을 유지하여 같은 데이터의 중복성이 발생하여 디스크의 공간을 낭비할 수 있음
DBMS는 DB에 데이터를 통합하여 관리하기에 중복 문제를 쉽게 해결할 수 있다.
- 만약 DB에서 중복이 발생하면 발생하는 치명적인 단점은 디스크에 있는 중복이 정보를 보여줄 때 메모리에 올려서 확인하기 때문에 결국에는 메모리의 공간 낭비로도 이어짐
- 디스크의 공간 낭비에서 메모리의 공간 낭비로도 이어짐
하나의 종속성을 가지고 있는 컬럼이 또 종속성을 가지고 있으면 잘라야됨 - 제3정규화
학생 테이블
학번 | 이름 | 학과 번호 | 학과 이름 |
001 | xxx | 1 | 컴퓨터정보 |
002 | xxa | 2 | 컴퓨터공학 |
003 | aan | 1 | 컴퓨터정보 |
↓
학과 테이블
학과 번호 | 학과 이름 |
1 | 컴퓨터정보 |
2 | 컴퓨터공학 |
3 | 드론학과 |
↓
학생 테이블에서 중속성이 있는 컬럼 제거
학번 | 이름 | 학과 번호 |
001 | xxx | 1 |
002 | xxa | 2 |
003 | aan | 1 |
학생 테이블에 학과 번호와 학과 이름은 서로 종속적인 관계이다, 이 부분에서 중복성 이슈가 발생함
→ 학과 번호만 남기고 학과 이름은 학과 테이블을 따로 만들어 조인을 시켜주어 중복성을 줄였다
단 , 지나친 정규화는 많은 조인을 만들어 성능 상 단점이 발생함 → 성능을 위해 반정규화 하는 경우도 있음
반정규화 : 하나 이상의 테이블에 데이터를 중복해 배치하는 최적화 기법
- 시스템의 성능 향상 또는 개발자의 편의성을 위해 의도적으로 정규화 원칙을 위배하는 행위
- 하지만 반정규화 동작 때문에 데이터 일관성 유지가 어려울 수 있다
데이터베이스의 처리속도에 가장 큰 영향을 미치는 것은 디스크 I/O 동작이다 하지만 데이터를 저장하는 하드디스크는 CPU에 비해 현저히 느리기 때문에 데이터베이스는 캐시 기술을 이용해 메모리에 올려서 처리하는 구조를 가지고 있음.
Cache : 가까운 미래나 다음 작업에 필요한 데이터를 미리 가져다 놓음
- Cache는 CPU안의 레지스터의 속도에 범접함 → 데이터 처리속도가 현저히 빨라짐