데이터모델링
복잡한 현실 세계에 존재하는 데이터를 단순화 시켜 표현해 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
데이터 모델링 특성 | ||
추상화(Abstraction) | 단순화(Simple) | 명확성(Clarity) |
현실세계를 간략하게 표현 | 누구나 쉽게 이해할 수 있도록 표현 |
명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 함. |
현실 세계 | → | 개념적 구조 | → | 논리적 구조 |
개념적 데이터 모델 |
논리적 데이터 모델 |
|||
사람의 머리로 이해할 수 있도록 |
개념적 구조를 논리적 형태로 모델링하여 |
데이터 모델링 (개체-관계 모델)
관계 (relationship)
- 개체와 개체가 맺고 있는 의미 있는 연관성
- 개체 집합들 사이의 대응관계, 즉 매핑(mapping)을 의미
- 예) 고객 개체와 상품 개체 간의 구매 관계 > "고객은 상품을 구매한다."
관계의 유형
- 일대일 (1 : 1) 관계
- 일대다 (1 : N) 관계
- 다대다 (N : M) 관계
E-R 다이어그램
E-R 다이어그램 도형 기호
관계형 데이터 모델
데이터 베이스의 구성
데이터베이스 스키마 (database schema)
- 데이터베이스의 전체 구조
- 데이터베이스를 구성하는 릴레이션 스키마의 모음
데이터베이스 인스턴스 (database instance)
- 데이터베이스를 구성하는 릴레이션 인스턴스의 모음
릴레이션의 특성 | |||
튜플의 유일성 | 튜플의 무순서 | 속성의 무순서 | 속성의 원자성 |
하나의 릴레이션에는 동일한 튜플이 존재할 수 없다. | 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다. | 하나의 릴레이션에서 속성사이의 순서는 무의미하다. | 속성 값을 원자 값으로 사용할 수 있다. |
키
릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합
키의 특성
유일성(uniqueness) | 최소성(minimality) |
데이터베이스를 구성하는 릴레이션 스키마의 모음 | 꼭 필요한 최소한의 속성들로만 키를 구성 |
키의 종류
기본키 (primary key) | 후보키 (candidate key) | 대체키 (alternate key) | 슈퍼키 (super key) |
후보키 중에서 기본적으로 사용하기 위해 선택한 키 | 유일성과 최소성을 만족하는 속성 또는 속성들의 집합 | 기본키로 선택되지 못한 후보키 | 유일성을 만족하는 속성 또는 속성들의 집합 |
외래키 ( foreign key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 릴레이션들 간의 관계를 표현
- 참조하는 릴레이션 : 외래키를 가진 릴레이션
- 참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션
제약조건
무결성 제약조건 (integrity constraint) | |
- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙 - 무결성 : 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것 |
|
개체 무결성 제약조건 (entity integrity constraint) | 참조 무결성 제약조건 (referential integrity constraint) |
기본키를 구성하는 모든 속성은 null 값을 가질 수 없는 규칙 |
외래키는 참조할 수 없는 값을 가질 수 없는 규칙 ※ 외래키의 속성이 null 값을 가진다고 참조 무결성을 위반하는 것 은 아니다 |
MySQL 데이터 타입
숫자 데이터 형식
데이터 형식 | 바이트 수 | 숫자범위 | 설명 |
BIT | N/8 | Bit 표현 | |
TINYINT | 1 | -128 ~ 127 | 정수 |
SMALLINT | 2 | -32,768 ~ 32,767 | 정수 |
MEDIUMINT | 3 | -8,388,608 ~ 3,388,607 | 정수 |
INT | 4 | 약 -21억 ~ 21억 | 정수 |
BIGINT | 8 | 약 -900경 ~ 900경 | 정수 |
FLOAT | 4 | -3.40E+38 ~ 1.79E-38 | 소수점 7자리 |
DOUBLE | 8 | -122E-308 ~ 1.79E+308 | 소수점 15자리 |
DECIMAL(m,[d]) | 5~17 | -10^38+1 ~ 10^38 -1 | 소수점 |
문자 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
CHAR | 1~255 | 고정길이 문자형 |
VARCHAR | 1~65535 | 가변길이 문자형 |
BINARY | 1~255 | 고정길이의 이진 데이터 값 |
VARMINARY | 1~255 | 가변길이의 이진 데이터 값 |
TEXT | 1~65535 | N크기의 TEXT데이터 값 |
BLOB | 1~65535 | N크기의 BLOB 데이터 값 |
ENUM | 1 or 2 | 최대 65535개의 열거형 데이터 값 |
SET | 1, 2, 3, 4, 8 | 최대 64개의 서로 다른 데이터 값 |
한글 데이터를 BINARY로 변환하여 ORDER BY 할 수 있음
날짜 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
DATE | 3 |
날짜 : 1001-01-01~999-12-31 까지 저장 날짜형식만 사용 'YYYY-MM-DD'
|
TIME | 3 |
시간: -838:59:59.000000~838:59:59.000000까지 저장 형식: ‘HH:MM:SS’ |
DATETIME | 8 |
날짜: 1001-01-01 00:00:00~9999-12-31 23:59:59 저장 형식: ‘YYYY-MM-DD HH:MM:SS’ |
TIMESTAMP | 4 |
날짜: 1001-01-01 00:00:00~9999-12-31 23:59:59 저장 형식: ‘YYYY-MM-DD HH:MM:SS’ Time_zone 시스템 변수와 관련 있으며 UTC 변환 저장 |
YEAR | 1 |
날짜: 1901~2155까지 저장. 형식: ‘YYYY’ |
'Database' 카테고리의 다른 글
[Database] join (0) | 2020.03.25 |
---|---|
[Database] SQL 활용 ② (0) | 2020.03.18 |
[Database] MySQL 실습 (0) | 2020.03.11 |
[Database] MySQL 설치 / 키워드 및 실습 (0) | 2020.03.11 |