소개
이 프로젝트에서는 기본 키, 외래 키, 고유 제약 조건, 기본값 및 검사 제약 조건을 포함하여 데이터베이스 스키마에 다양한 제약 조건을 추가하는 방법을 배우게 됩니다. 이 프로젝트를 완료하면 관계형 데이터베이스에서 데이터 무결성 규칙을 설계하고 적용하는 방법에 대한 이해도가 높아질 것입니다.
👀 미리보기

🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
salgrade테이블에 복합 기본 키를 생성하는 방법emp테이블의deptno필드에 외래 키를 지정하는 방법emp테이블의ename필드에서 중복을 방지하기 위해 고유 제약 조건 (unique constraint) 을 사용하는 방법emp테이블의comm필드에 기본값을 설정하는 방법emp테이블의hiredate필드에서 2022 년 2 월 28 일 이후의 입사일을 입력하지 못하도록 검사 제약 조건 (check constraint) 을 사용하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 데이터베이스 설계에서 데이터 무결성 제약 조건의 중요성을 이해합니다.
- MySQL 데이터베이스에서 다양한 유형의 제약 조건을 구현합니다.
- 데이터 품질 및 일관성을 유지하기 위한 모범 사례를 적용합니다.
- 데이터베이스 제약 조건과 관련된 문제를 해결하고 디버깅합니다.
MySQL 서버 시작 및 데이터베이스 가져오기
이 단계에서는 MySQL 서비스를 시작하고 personnel.sql 데이터베이스를 가져오는 방법을 배우게 됩니다. 이 단계를 완료하려면 아래 단계를 따르세요:
MySQL 시작:
sudo /etc/init.d/mysql startpersonnel.sql데이터베이스를 MySQL 로 가져오기. 터미널에서 다음 명령을 실행하여 이 작업을 수행할 수 있습니다:mysql -u root < /home/labex/project/personnel.sql
이 명령은 root 사용자를 사용하여 personnel.sql 데이터베이스를 MySQL 로 가져옵니다.
'salgrade' 테이블에 복합 기본 키 추가
이 단계에서는 salgrade 테이블에 복합 기본 키를 추가하는 방법을 배우게 됩니다. 아래 단계를 따라 이 단계를 완료하세요:
MySQL 터미널에 로그인합니다:
mysql -urootpersonnel데이터베이스를 사용합니다:USE `personnel`;grade,losal, 및hisal필드를 복합 기본 키로 사용하여salgrade테이블에 복합 기본 키를 추가합니다:ALTER TABLE salgrade ADD PRIMARY KEY (grade, losal, hisal);
이렇게 하면 grade, losal, 및 hisal 필드를 사용하여 salgrade 테이블에 복합 기본 키가 생성됩니다.
'emp' 테이블에 제약 조건 추가
이 단계에서는 다음을 배우게 됩니다:
- 'emp' 테이블의 'deptno' 필드에 'dept' 테이블의 'deptno' 필드를 참조하는 외래 키 (foreign key) 를 지정하는 방법.
- 'emp' 테이블의 'name' 필드 중복을 방지하기 위해 고유 제약 조건 (unique constraint) 을 사용하는 방법.
- 'emp' 테이블의 'comm' 필드의 기본값을 100 으로 설정하기 위해 기본값 제약 조건 (default value constraint) 을 사용하는 방법.
- check 제약 조건을 사용하여 'emp' 테이블의 'hiredate' 필드에 2022 년 2 월 28 일 이후의 입사일을 입력하는 것을 방지하는 방법.
이 단계를 완료하려면 아래 단계를 따르세요.
personnel데이터베이스를 사용합니다:USE `personnel`;emp테이블의deptno필드에 외래 키를 지정하여dept테이블의deptno필드를 참조합니다:ALTER TABLE emp ADD FOREIGN KEY (deptno) REFERENCES dept(deptno);고유 제약 조건을 사용하여
emp테이블의ename필드에서 중복을 방지합니다:ALTER TABLE emp ADD UNIQUE (ename);기본값 제약 조건을 사용하여
emp테이블의comm필드의 기본값을 100 으로 설정합니다:ALTER TABLE emp ALTER COLUMN comm SET DEFAULT 100;check 제약 조건을 사용하여
emp테이블의hiredate필드에 2022 년 2 월 28 일 이후의 입사일을 입력하는 것을 방지합니다:ALTER TABLE emp ADD CHECK (hiredate <= '2022-02-28');
테이블 구조 확인
이 단계에서는 명령을 사용하여 salgrade 및 emp 테이블의 구조를 표시합니다:
salgrade테이블의 구조를 표시합니다:desc salgrade;emp테이블의 구조를 표시합니다:desc emp;
다음과 같은 출력을 볼 수 있습니다:
MariaDB [personnel]> desc salgrade;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| grade | int(4) | NO | PRI | NULL | |
| losal | double(7,2) | NO | PRI | NULL | |
| hisal | double(7,2) | NO | PRI | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.001 sec)
MariaDB [personnel]> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| empno | int(4) | NO | PRI | NULL | |
| ename | varchar(20) | YES | UNI | NULL | |
| job | varchar(20) | YES | | NULL | |
| mgr | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | double(7,2) | YES | | NULL | |
| comm | double(7,2) | YES | | 100.00 | |
| deptno | int(4) | YES | MUL | NULL | |
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.001 sec)
축하합니다! 프로젝트를 성공적으로 완료했습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



