[데이터베이스] RDBMS의 기본
cleanUrl: /데이터베이스-RDBMS의-기본 floatFirstTOC: right
테이블의 구성: 필드와 레코드

필드 타입
숫자형
데이터 유형 | 정의 |
TINYINT(n) | 정수형 데이터 타입(1byte)
-128 ~ +127 또는 0 ~ 255수 표현할 수 있다. |
SMALLINT(n) | 정수형 데이터 타입(2byte)
-32768 ~ 32767 또는 0 ~ 65536수 표현할 수 있다. |
MEDIUMINT(n) | 정수형 데이터 타입(3byte)
-8388608 ~ +8388607 또는 0 ~ 16777215수 표현할 수 있다. |
INT(n) | 정수형 데이터 타입(4byte)
-2147483648 ~ +2147483647 또는 0 ~ 4294967295수 표현할 수 있다. |
BIGINT(n) | 정수형 데이터 타입(8byte)
- 무제한 수 표현할 수 있다. |
FLOAT(길이, 소수) | 부동 소수형 데이터 타입(4byte)
-고정 소수점을 사용 형태이다. |
DECIMAL(길이, 소수) | 고정 소수형 데이터 타입고정(길이+1byte)
-소수점을 사용 형태이다. |
DOUBLE(길이, 소수) | 부동 소수형 데이터 타입(8byte)
-DOUBLE을 문자열로 저장한다. |
문자형
데이터 유형 | 정의 |
CHAR(n) | 고정 길이 데이터 타입(최대 255byte)
- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. |
VARCHAR(n) | 가변 길이 데이터 타입(최대 65535byte)
- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간은 채우지 않는다. |
TINYTEXT(n) | 문자열 데이터 타입(최대 255byte) |
TEXT(n) | 문자열 데이터 타입(최대 65535byte) |
MEDIUMTEXT(n) | 문자열 데이터 타입(최대 16777215byte) |
LONGTEXT(n) | 문자열 데이터 타입(최대 4294967295byte) |
날짜/시간형
데이터 유형 | 정의 |
DATE | 날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte) |
TIME | 시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte) |
DATETIME | 날짜와 시간 형태의 기간 표현 데이터 타입(8byte) |
TIMESTAMP | 날짜와 시간 형태의 기간 표현 데이터 타입(4byte)
-시스템 변경 시 자동으로 그 날짜와 시간이 저장된다. |
YEAR | 년도 표현 데이터 타입(1byte) |
기타
데이터 유형 | 정의 |
ENUM | 정해진 문자열 값들 중 하나(예: 남, 여) |
GEOMETRY | 위치 정보나 도형(점, 선, 면 등) |
XML | 구조화된 마크업 데이터 타입 |
JSON | JSON 문자열 데이터 타입 |
키
교수 이름 | 과목 이름 | 학생 수 |
Kim | 자료구조 | 20 |
Lee | 운영체제 | 30 |
Park | 컴퓨터구조 | 20 |
Kim | 데이터베이스 | 30 |
Park | 데이터베이스 | 30 |
글 ID | 글 제목 | 작성 글 | 작성자 | 작성 날짜 |
1 | 오늘 일기 | 오늘은 밥을 먹었다. 어디를 놀러 갔는데… | Kim | 2021-01-12 |
2 | 독후감 | 오늘은 C++ 책을 리뷰해 볼게요… | Lee | 2021-01-15 |
3 | 영화 후기 | 오늘은 어벤져스 영화를 리뷰해 보겠습니다… | Park | 2021-01-20 |

후보키 (candidate key)
학번 | 이름 | 이메일 | 전화번호 |
2021001 | Kim | kim@example.com | 010-1234-5678 |
2021002 | Lee | lee@example.com | 010-2345-6789 |
2021003 | Park | park@example.com | 010-3456-7890 |
2021004 | Kang | kang@example.com | 010-5678-4145 |
2021005 | Choi | choi@example.com | 010-2353-2452 |
학번 | 과목 코드 | 학년 | 수강 연도 | 점수 |
2021001 | CS101 | 1 | 2021 | 76 |
2021002 | CS101 | 1 | 2021 | 89 |
2021003 | CS102 | 1 | 2021 | 57 |
2021004 | CS103 | 1 | 2021 | 85 |
2021005 | CS102 | 1 | 2021 | 46 |
기본키(primary key, PK)
외래키(foreign key, FK)
학번 | 이름 |
2021001 | Kim |
2021002 | Lee |
2021003 | Park |
2021004 | Kang |
2021005 | Choi |
학번 | 과목 코드 | 성적 |
2021001 | CS101 | 76 |
2021002 | CS101 | 89 |
2021003 | CS102 | 57 |
2021004 | CS103 | 85 |
2021005 | CS102 | 46 |
테이블의 관계

일대일 대응 관계
여권 번호 | 고객 번호 | 발급 날짜 |
123456 | 1 | 2021-01-01 |
234564 | 2 | 2021-01-02 |
34567 | 3 | 2021-01-03 |
고객 번호 | 이름 |
1 | 홍길동 |
2 | 박철수 |
3 | 김개똥 |
일대다 대응 관계
고객 ID | 이름 |
1 | 홍길동 |
2 | 김철수 |
주문 ID | 고객 ID | 주문 날짜 |
1001 | 1 | 2024-05-20 |
1002 | 1 | 2024-05-21 |
1003 | 2 | 2024-05-22 |
다대다 대응 관계



무결성 제약 조건

1. 도메인 제약 조건

이름 | 나이 | 성별 |
홍길동 | 45 | 남 |
홍길순 | 34 | 여 |
김개똥 | 27 | 남 |
이름과 나이와 성별 |
홍길동, 45, 남 |
홍길순, 34, 여 |
김개똥, 27, 남 |
2. 키 제약 조건
3. 엔티티 무결성 제약 조건
4. 참조 무결성 제약 조건
- CASCADE (연쇄 삭제/수정)
- 부모 테이블에서 삭제되거나 수정된 값을 자식 테이블에도 같이 반영한다.
- 예를 들어, 학과 테이블에서 학과 id가 10인 학과를 삭제하면, 학생 테이블에서 학과 10을 가진 학생 정보도 함께 삭제된다.
- SET NULL
- 부모 테이블의 데이터가 삭제되거나 수정되면, 자식 테이블의 외래 키 값을 NULL로 수정한다.
- SET DEFAULT
- 외래 키 값을 기본값으로 설정한다. (실제 사용은 드물다고 한다.)
- RESTRICT / NO ACTION
- 부모 테이블의 데이터를 삭제하거나 수정하려고 할 때, 자식 테이블에서 참조 중이라면 작업을 거부한다.
- 무결성을 가장 엄격하게 보장하는 방식이다.
참고 자료
[DB] 데이터베이스 용어 정리 - 필드, 레코드, 엔티티, 특성
이전 글에서 데이터, 데이터베이스, 그리고 SQL에 대한 간략한 설명을 했었습니다. 이번에는 데이터베이스의 구성과 용어들에 정리해보겠습니다. 엑셀과 데이터베이스 엑셀의 테이블은 행과 열로 구분되며, 다양한 데이터를 보관 및 관리 할 수있죠. 거기에, 함수를 이용해서 연산도 가능합니다. 데이터베이스는 엑셀과 매우 유사한 형식으로 구성되어 있습니다. 데이터가 어떻게 저장되어 있는지 떠올려 볼 때, 엑셀의 테이블(표)을 생각하면 쉽게 이해할 수 있습니다. 데이터베이스 용어 위의 예제 테이블을 통해 각 용어를 알아보겠습니다. 필드 Fields 필드 Field는 엑셀에서 열 column에 해당하는 가장 작은 단위의 데이터를 의미합니다. 이 필드는 엔티티의 속성을 표현합니다. 위의 표에서 각 열은 고객의 정보(ID..
CSnote

DB - 데이터 타입/MYSQL
# 데이터 타입(DataType) 정의
다대다(N:N) 관계는 왜 피해야할까?
다대다 관계데이터베이스를 설계에서 다대다(N:N)관계는 피하는것은 일반적으로 권장되고있습니다. 하지만 자세한 설명이 추가되지않는다면 그 이유가 헷갈릴 수 있는데요. 이는 데이터의 무결성, 효율성, 유지보수 등 다양한 측면에서 중요한 이유가 있어 권장하지 않는것입니다. 다대다 관계란?다대다 관계란 하나의 엔티티(Entity)가 다수의 다른 엔티티와 관계를 맺고 있는 상황을 나타냅니다. 예를들어, 학생과 강좌간의 관계에서 한 학생이 여러 강좌를 수강하고, 한 강좌에는 여러 학생이 수강할 수 있는것이 다대다 관계입니다. 다대다 관계는 왜 피해야할까?위에 연관관계를 통해 완성된 테이블을 만들어보겠습니다. 1. 데이터 중복성과 무결성 문제위 테이블에 기본키(PK)를 포함해서 데이터의 중복이 발생했고, 데이..
다대다(N:N) 관계를 조금 더 쉽게 풀어보자 (2진법의 활용)
이전 글 다대다(N:N) 관계는 왜 피해야할까?다대다 관계 데이터베이스를 설계에서 다대다(N:N)관계는 피하는것은 일반적으로 권장되고있습니다. 하지만 자세한 설명이 추가되지않는다면 그 이유가 헷갈릴 수 있는데요. 이는 데이터의 무tmd8633.tistory.com 이전 글에서 다대다(M:N) 관계를 해결하기 위해 1:N, N:1로 관계를 풀어주었습니다. 이를 통해 데이터 무결성과 중복성을 해결할 수 있었고, 유지보수와 확장에 대한 장점을 얻을 수 있었습니다.하지만 이런 관계가 무한정 증가하다보면 관계가 복잡해지면서 이해하기가 어려워지는 단점이 존재합니다. 이번에는 1:N, N:1로써 해결하는것이 아닌 2진법을 통해 이 관계를 풀어보도록 하겠습니다. 2진법과 비트연산컴퓨터를 조금이라도 공부해본사람이라면 ..
[DB] 📚 무결성 제약 조건 🕵️ 정리
무결성 데이터의 정확성 또는 유효성을 의미 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의함 무결성 제약 조건 1. 도메인 제약조건(domain constraint) 각 애트리뷰트 값이 반드시 원자값이어야 함 애트리뷰트 값의 디폴트 값, 가능한 값들의 범위 등을 지정할 수 있음 2. 키 제약조건(key constraint) 키 애트리뷰트에 중복된 값이 존재해서는 안됨 -> 기본키가 아님 3. 엔티티 무결성 제약조건(entity integrity constraint) 엔티티 : 데이터 집합 (사원, 부서, 고객, 상품...) 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없음 대체 키에는 적용되지 않음 4. 참조 무결성 제약조건(referential int..

