1. 요구 사항 분석
요구 사항 설계
2. 개념적 설계
| 개체 |
속성 |
| 관리자 |
manager_id(관리자 아이디), id(아이디), password(비밀번호) |
| 사용자 |
number(사용자 아이디), user_id(아이디), user_password(비밀번호), department(담당부서), user_name(담당자 이름), user_number(담당자 연락처) |
| 기간제 인력 |
term_id(기간제 인력 아이디), name(이름), birthdate(생년월일), address(주소), first_tenure(입사일), last_tenure(퇴사일), occupation(직종), issuing_department(발급부서), user_name(담당자 이름), user_number(담당자 연락처) |
| 부서 목록 불러오기 |
department_id(부서 아이디), department(담당부서) |
관계 추출
| 관계 |
관계에 참여하는 개체 |
관계 유형 |
관계 속성 |
| 사용자 기간제 인력 입력 (user_term_create) |
사용자, 기간제 인력 |
1 : N |
기간제 인력 속성 |
| 사용자 부서 입력 (user_department_create) |
사용자, 부서 목록 불러오기 |
1 : 1 |
number, department_id, department |
3. 논리적 설계
- 규칙 1) 모든 개체는 릴레이션으로 변환한다.
- 규칙 2) 다대다 관계는 릴레이션으로 변환한다.
| 개체 |
속성 |
| 관리자 |
manager_id(관리자 아이디), id(아이디), password(비밀번호) |
| 사용자 |
number(사용자 아이디), user_id(아이디), user_password(비밀번호), department(담당부서), user_name(담당자 이름), user_number(담당자 연락처) |
| 기간제 인력 |
term_id(기간제 인력 아이디), name(이름), birthdate(생년월일), address(주소), first_tenure(입사일), last_tenure(퇴사일), occupation(직종), issuing_department(발급부서), user_name(담당자 이름), user_number(담당자 연락처) |
| 부서 목록 불러오기 |
department_id(부서 아이디), department(담당부서) |
- 규칙 3) 다대일 관계는 외래키로 표현한다. (외래키)
| 개체 |
속성 |
| 관리자 |
manager_id(관리자 아이디), id(아이디), password(비밀번호) |
| 사용자 |
number(사용자 아이디), user_id(아이디), user_password(비밀번호), department(담당부서), user_name(담당자 이름), user_number(담당자 연락처) |
| 기간제 인력 |
term_id(기간제 인력 아이디), number(사용자 아이디), name(이름), birthdate(생년월일), address(주소), first_tenure(입사일), last_tenure(퇴사일), occupation(직종), issuing_department(발급부서), user_name(담당자 이름), user_number(담당자 연락처), |
| 아이디 |
|
| 부서 목록 불러오기 |
department_id(부서 아이디), number(사용자 아이디), department(담당부서) |
- 규칙 4) 일대일 관계는 외래키로 표현한다.
- 규칙 5) 다중 값 속성은 릴레이션으로 변환한다.ㅁ
물리적 설계 및 구현
DDL
//관리자
CREATE TABLE managers
(
manager_id BIGINT PRIMARY KEY,
id VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(30) NOT NULL
);
//사용자
CREATE TABLE users
(
number BIGINT PRIMARY KEY,
user_id VARCHAR(255) NOT NULL UNIQUE,
user_password VARCHAR(30) NOT NULL,
department VARCHAR(255) NOT NULL,
user_name VARCHAR(50) NOT NULL,
user_number VARCHAR(20) NOT NULL
);
//기간제 인력
CREATE TABLE terms
(
term_id BIGINT PRIMARY KEY,
number BIGINT NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL,
birthdate VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
first_tenure VARCHAR(255) NOT NULL,
last_tenure VARCHAR(255) NOT NULL,
issuing_department VARCHAR(255) NOT NULL,
user_name VARCHAR(50) NOT NULL,
user_number VARCHAR(20) NOT NULL,
occupation VARCHAR(255) NOT NULL,
FOREIGN KEY (number) users(number)
);
CREATE TABLE departments
(
department_id BIGINT PRIMARY KEY,
number BIGINT NOT NULL UNIQUE,
department VARCHAR(255) NOT NULL,
FOREIGN KEY (number) users(number)
)