입사 지원을 하다보면 이력서에 작성해야 할 내용이 많다. 방대한 입력 데이터를 회사는 어떻게 DB에 저장할까?
그림으로 데이터 관계도를 그려봤다.
채용 프로세스를 살펴보면 대부분
입사 지원(이력서 제출) > 코딩 테스트/필기 시험 > 1차 면접 > 임원 면접 > 최종 발표
와 같은 형식으로 진행된다.
dbdiagram 사이트를 통해 ERD를 그려보았다.
dbdiagram 코드
// Use DBML to define your database structure
// Docs: https://dbml.dbdiagram.io/docs
Table applicant {
applicant_id integer [primary key]
name integer
birthdate date
}
Table apply {
apply_id integer [primary key]
applicant_id integer // fk
recruit_id integer // fk
resume_id integer // fk
pass integer unique [note: '필기시험 합격, 코딩테스트 합격'] // fk
created_at timestamp
}
Table company {
company_id integer [primary key]
name varchar
}
Table recruit {
recruit_id integer [primary key]
title varchar [note: '2023 상반기 신입 공채, 2023 하반기 채용연계형 인턴']
start_date date
end_date date
company_id integer // fk
}
Table progress {
progress_id integer [primary key]
title varchar [note: '필기시험, 코딩테스트, 1차 면접, 임원 면접']
start_date date
end_date date
recruit_id integer // fk
}
Table resume {
resume_id integer [primary key]
applicant_id integer // fk
recruit_id integer // fk
question1 varchar [note: '1. 지원 동기']
question2 varchar [note: '2. 직무 역량']
question3 varchar [note: '3. 입사 후 포부']
}
Ref: apply.applicant_id > applicant.applicant_id
Ref: recruit.company_id > company.company_id
Ref: progress.recruit_id > recruit.recruit_id
Ref: apply.recruit_id > recruit.recruit_id
Ref: resume.applicant_id > applicant.applicant_id
Ref: resume.recruit_id > recruit.recruit_id
Ref: apply.resume_id > resume.resume_id
MySQL 코드
CREATE TABLE `applicant` (
`applicant_id` integer PRIMARY KEY,
`name` integer,
`birthdate` date
);
CREATE TABLE `apply` (
`apply_id` integer PRIMARY KEY,
`applicant_id` integer,
`recruit_id` integer,
`resume_id` integer,
`pass` integer UNIQUE COMMENT '필기시험 합격, 코딩테스트 합격',
`created_at` timestamp
);
CREATE TABLE `company` (
`company_id` integer PRIMARY KEY,
`name` varchar(255)
);
CREATE TABLE `recruit` (
`recruit_id` integer PRIMARY KEY,
`title` varchar(255) COMMENT '2023 상반기 신입 공채, 2023 하반기 채용연계형 인턴',
`start_date` date,
`end_date` date,
`company_id` integer
);
CREATE TABLE `progress` (
`progress_id` integer PRIMARY KEY,
`title` varchar(255) COMMENT '필기시험, 코딩테스트, 1차 면접, 임원 면접',
`start_date` date,
`end_date` date,
`recruit_id` integer
);
CREATE TABLE `resume` (
`resume_id` integer PRIMARY KEY,
`applicant_id` integer,
`recruit_id` integer,
`question1` varchar(255) COMMENT '1. 지원 동기',
`question2` varchar(255) COMMENT '2. 직무 역량',
`question3` varchar(255) COMMENT '3. 입사 후 포부'
);
ALTER TABLE `apply` ADD FOREIGN KEY (`applicant_id`) REFERENCES `applicant` (`applicant_id`);
ALTER TABLE `recruit` ADD FOREIGN KEY (`company_id`) REFERENCES `company` (`company_id`);
ALTER TABLE `progress` ADD FOREIGN KEY (`recruit_id`) REFERENCES `recruit` (`recruit_id`);
ALTER TABLE `apply` ADD FOREIGN KEY (`recruit_id`) REFERENCES `recruit` (`recruit_id`);
ALTER TABLE `resume` ADD FOREIGN KEY (`applicant_id`) REFERENCES `applicant` (`applicant_id`);
ALTER TABLE `resume` ADD FOREIGN KEY (`recruit_id`) REFERENCES `recruit` (`recruit_id`);
ALTER TABLE `apply` ADD FOREIGN KEY (`resume_id`) REFERENCES `resume` (`resume_id`);
'Database' 카테고리의 다른 글
Windows에서 MySQL 설치 및 삭제하기 (0) | 2023.11.28 |
---|