티스토리 뷰

개발공부/🧺 DBMS

[DB] 데이터베이스 구성하기

2022. 9. 17. 10:16

1️⃣  제약조건

 

테이블에 잘못된 데이터가 입력되는 것을 방지하기 위한 규칙

 

→  제약 조건을 통해 무결성을 지킬 수 있다.

 

NOT NULL, UNIQUE, DEFAULT, CHECK, PRIMARY KEY, FOREIGN KEY 등

 

 

 

 

NOT NULL

 

널(NULL) 값 비허용

 

-  데이터를 입력하지 않으면 에러가 발생한다.

-  아무것도 명시하지 않는 경우 기본 값은 NULL값을 허용한다.

CREATE TABLE customer(
	id	VARCHAR(10),
	name	VARCHAR(10) NOT NULL
);

INSERT INTO customer (id, name) VALUES('kmax6', '김민준');
INSERT INTO customer (name) VALUES('이서연');

-- 에러 발생
-- INSERT INTO customer (id) VALUES('kmax6);

 

 

 

 

UNIQUE

 

중복되는 값 비허용

 

-  똑같은 값이 있으면 에러가 발생한다.

-  NULL 값은 비교가 불가능하여 중복되어도 에러가 발생하지 않는다.

CREATE TABLE customer(
	id	VARCHAR(10) UNIQUE,
	name	VARCHAR(10) NOT NULL
);

INSERT INTO customer (id, name) VALUES('kmax6', '김민준');

INSERT INTO customer (name) VALUES('최지훈');
INSERT INTO customer (name) VALUES('이민호');

-- 에러 발생
INSERT INTO customer (id, name) VALUES('kmax6', '이서연');

 

 

 

 

DEFAULT

 

기본값 설정

 

-  아무런 값을 지정하지 않으면 DEFAULT 값으로 설정된다.

CREATE TABLE customer(
	id	VARCHAR(10) UNIQUE,
	name	VARCHAR(10) NOT NULL,
	address	VARCHAR(30) DEFAULT 'No Address'
);

-- address가 'No Address'로 설정된다.
INSERT INTO customer (id, name) VALUES('kmax6', '김민준');

-- address가 '서울시 동작구 대방동'으로 설정된다.
INSERT INTO customer VALUES('flykite', '이서연', '서울시 동작구 대방동');

 

 

 

 

CHECK

 

값의 범위를 제한하여 특정 값만 허용

 

-  제한한 값이 아닌 경우 에러가 발생한다.

CREATE TABLE customer(
	id	VARCHAR(10)	UNIQUE,
	name	VARCHAR(10)	NOT NULL,
	address	VARCHAR(30)	DEFAULT 'No Address',
	age	INT		CHECK (age >= 19)
);

 

 

 

 

제약 조건 정의(CONSTRAINT)

CREATE TABLE customer(
	id	VARCHAR(10),
	age	INT,
	CONSTRAINT id_unique UNIQUE (id),
	CONSTRAINT age_check	CHECK (age >= 19)
);

 

 

제약 조건 이름 정의하기

CONSTRAINT 제약조건이름 제약조건[UNIQUE, CHECK, ...] (적용할 속성);

💡  단, NOT NULL과 DEFAULT는 CONSTRAINT를 사용하여 정의할 수 없다.

 

 

생성된 제약 조건 확인하기

SELECT * FROM information_schema.table_constraints;

 

 

 

 

 

제약 조건 추가

ALTER TABLE customer
ADD CONSTRAINT address_unique UNIQUE (address);

ALTER TABLE customer
ADD CONSTRAINT customer_chk_2 CHECK (age >= 19 AND name='김민준');

ALTER TABLE customer
ALTER address SET DEFAULT '주소없음';

 

 

제약 조건 추가하기

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 제약조건(속성);

 

DEFAULT 제약 조건 수정하기

ALTER TABLE 테이블명 ALTER 속성 SET DEFAULT 기본값;

 

 

 

 

 

제약 조건 삭제

ALTER TABLE customer DROP CONSTRAINT customer_chk_2;

ALTER TABLE customer
ALTER address DROP DEFAULT;

 

 

제약 조건 삭제하기

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건이름;

 

DEFAULT 제약 조건 삭제하기

ALTER TABLE 테이블명 ALTER 속성 DROP DEFAULT

 

 

 

 

 

 

2️⃣  키 (Key)

 

조건에 만족하는 튜플을 찾거나, 정렬할 때 기준이 되는 속성

 

-  key의 종류  :  기본키, 외래키, 후보키, 대체키, 슈퍼키

 

 

 

 

기본키 (Primary Key)

 

서로 다른 튜플을 유일하게 식별할 수 있는 기준이 되는 속성

 

-  중복되는 값을 가질 수 없다.

-  널(null) 값을 가질 수 없다.

-  테이블 당 1개만 설정 가능하다. (속성 2개를 묶어서 기본키로 설정도 가능)

 

 

 

외래키 (Foreign Key)

 

다른 테이블의 기본키를 참조하는 속성

 

-  테이블의 관계를 정의한다.

-  참조되는 테이블의 기본키에 없는 값은 지정할 수 없다.

 

 

슈퍼키

:  튜플을 식별할 수 있는 유일성은 만족하지만 최소성은 만족하지 않는 키

 

 

후보키

:  기본키가 될 수 있는 키로 유일성과 최소성을 만족 (기본키 ⊂ 후보키)

 

 

대체키

:  후보키 중에 기본키가 아닌 키 (대체키⊂ 후보키)

 

 

 

💡  무결성 제약 조건

-  개체 무결성  : 기본키는 널 값과 중복된 값을 가질 수 없다. (NOT NULL + UNIQUE)

-  참조 무결성  :  외래키는 널이거나 참조되는 릴레이션의 기본키 값과 동일하다.

-  도메인 무결성  :  특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 한다.

-  NULL 무결성  :  특정 속성값은 널 값을 가질 수 없다.

-  고유 무결성  :  각 튜플이 가지는 속성값들은 서로 달라야 한다.

-  키 무결성  :  테이블에 최소 한 개 이상의 키 존재한다.

 

 

 

 

 

3️⃣  데이터 모델링

 

현실 세계에 존재하는 데이터를 데이터베이스화하는 과정

 

 

 

데이터 모델

 

현실 세계의 데이터를 단순화, 추상화하여 표현한 모델

 

 

-  데이터 모델의 구성요소는 개체, 속성, 관계

 

개체(Entity) 

:  데이터로 표현하고자 하는 현실 세계의 개념이나 정보의 단위

ex)  킥보드, 회원

 

속성(Attribute)

:  개체에 대한 정보

ex)  킥보드의 브랜드/이용 가격, 회원의 아이디/이름

 

관계(Relationship)

: 개체 간의 연관성

ex)  고객은 킥보드를 대여한다

 

 

 

 

 

데이터 모델링 과정

 

 

-  개념적 설계  :  현실 세계를 추상적 개념으로 표현하는 과정  →  도식화

-  논리적 설계  :  DBMS가 처리할 수 있는 데이터 구조(스키마)를 설계

-  물리적 설계  :  DBMS에 테이블을 저장할 구조를 설계

 

 

 

 

 

 

4️⃣  ERD, Entity-Relationship Diagram (개체-관계 다이어그램)

 

현실 세계의 데이터를 개체와 관계 형태의 다이어그램으로 나타내는 것

 

-  대표적인 표기법으로는 Peter Chen 표기법, IE 표기법이  있다.

 

 

 

 

1.  Peter Chen 표기법

 

기호 의미
개체
속성
 
관계
개체와 속성의 연결
기본키

 

 

관계 추가하기

-  하나의 데이터가 다른 테이블의 몇 개의 데이터와 관계를 가지는지 나타낸다.

-  N : M 관계는 테이블로 표기하며 각 개체의 기본키를 외래키로 가진다.

 

기호 의미
1 : 1 관계
1 : N 관계
N : M 관계

 

 

 

 

 

2.  IE 표기법 (Information Engineering)

 

이미지출처 : 엘리스 데이터베이스 기초 - 2장 데이터베이스 구성하기 강의자료

 

-  표 형태로 표기하여 가장 상단의 테이블명을 표기한다.

-  키를 나타내며 데이터 타입과 제약 조건도 표기한다.

-  관계를 세부적으로 나타낸다.

 

 

까마귀발 표기법 (관계표현)

 

기호 의미
0 또는 1
정확히 1
0 이상
1 이상

 

 

 


 이 글은 엘리스의 AI트랙 5기 강의를 들으며 정리한 내용입니다.

반응형

'개발공부 > 🧺 DBMS' 카테고리의 다른 글

[DB] 데이터 모델링  (0) 2022.09.19
[DB] 데이터베이스란 무엇인가?  (0) 2022.09.16
프로필사진
개발자 삐롱히

프론트엔드 개발자 삐롱히의 개발 & 공부 기록 블로그