제약 조건이란?
테이블에 잘못된 데이터가 입력되는 것을 방지하기 위한 규칙 제약 조건을 통해 무결성을 지킬 수 있음
널(NULL) 값 비허용
데이터를 입력하지 않으면 에러가 발생함 아무것도 명시하지 않는 경우 기본 값은 널 값 허용
중복되는 값을 비허용
똑같은 값이 있으면 에러가 발생함
NULL 값은 비교가 불가능하여 중복되어도 에러가 발생하지 않음
기본값을 설정
아무런 값을 지정하지 않으면 DEFAULT 값으로 설정됨
값의 범위를 제한하여 특정 값만 허용 제한한 값이 아닌 경우 에러 발생
제약 조건 이름 정의: CONSTRAINT 제약조건이름 제약조건[UNIQUE, CHECK, ...] (적용할 속성);
생성된 제약 조건 확인: SELECT * FROM information_schema.table_constraints;
제약 조건 추가: ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 제약조건(속성);
DEFAULT 제약 조건 수정: ALTER TABLE 테이블명 ALTER 속성 SET DEFAULT 기본값;
제약 조건 삭제: ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건이름;
DEFAULT 제약 조건 삭제: ALTER TABLE 테이블명 ALTER 속성 DROP DEFAULT
조건에 만족하는 튜플을 찾거나, 정렬할 때 기준이 되는 속성
• 기본키 • 외래키 • 후보키 • 대체키 • 슈퍼키
: 서로 다른 튜플을 유일하게 식별할 수 있는 기준이 되는 속성
기본키 설정: PRIMARY KEY
중복되는 값을 가질 수 없음
널 값을 가질 수 없음
테이블 당 1개만 설정
: 다른 테이블의 기본키를 참조하는 속성으로 테이블의 관계를 정의
외래키 설정: FOREIGN KEY (참조할 속성) REFERENCES 참조되는 테이블(참조되는 속성)
참조되는 테이블의 기본키에 없는 값은 지정할 수 없음
•후보키: 기본키가 될 수 있는 키로 유일성과 최소성을 만족 (기본키 ⊂ 후보키)
• 대체키: 후보키 중에 기본키가 아닌 키 (대체키⊂ 후보키)
• 슈퍼키: 튜플을 식별할 수 있는 유일성은 만족하지만 최소성은 만족하지 않는 키
• 도메인 무결성: 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 함
• NULL 무결성: 특정 속성값은 널 값을 가질 수 없음
• 고유 무결성: 각 튜플이 가지는 속성값들은 서로 달라야 함
• 키 무결성: 테이블에 최소 한 개 이상의 키 존재
데이터 모델링이란?
현실 세계에 존재하는 데이터를 데이터베이스화하는 과정
공유 킥보드를 이용하기 위해서는 회원 가입을 하고 애플리케이션을 설치해야 합니다.
그런데 공유 킥보드 브랜드가 여러 개 생기면서, 회원 가입을 해야 할 브랜드가 많아지고 관리가 어려워졌습니다. 그래서 모든 공유 킥보드를 모아서 관리하는 서비스를 만들기로 했습니다.
그 첫 번째 과정으로 데이터베이스를 설계하려고 합니다.
현실 세계의 데이터를 단순화, 추상화하여 표현한 모델
• 개체(Entity): 데이터로 표현하고자 하는 현실 세계의 개념이나 정보의 단위 (ex. 킥보드, 회원)
• 속성(Attribute): 개체에 대한 정보 (ex. 킥보드의 브랜드/이용 가격, 회원의 아이디/이름)
• 관계(Relationship): 개체 간의 연관성 (ex. 고객은 킥보드를 대여한다)
개념적 설계: 현실 세계를 추상적 개념으로 표현하는 과정
논리적 설계: DBMS가 처리할 수 있는 데이터 구조(스키마)를 설계 물리적 설계: DBMS에 테이블을 저장할 구조를 설계
현실 세계의 데이터를 개체와 관계 형태의 다이어그램으로 나타내는 것 표기법: Peter Chen, IE
요구사항
• 고객은 회원 가입 시 이름, ID, PW, 전화번호, 생년월일을 입력합니다.
• 각 킥보드는 고유한 ID를 가집니다.
• 킥보드는 브랜드와 연식에 따라 기본료가 달라집니다.
• 고객이 킥보드를 대여하면 대여 상태, 대여 시간, 대여 위치를 기록해야 합니다. • 한 명의 고객은 한 번에 하나의 킥보드만 대여할 수 있습니다.
• 킥보드는 이용 1분에 대한 가격에 대한 정보를 가지며 이는 브랜드를 출시한 회사가 결정합니다.
하나의 데이터가 다른 테이블의 몇 개의 데이터와 관계를 가지는지 나타냄
N : M 관계는 테이블로 표기하며 각 개체의 기본키를 외래키로 가짐
키를 나타내며 데이터 타입과 제약 조건도 표기 관계를 세부적으로 나타냄