요구사항 분석
학사관리 시스템
회원가입 기능 - 아이디, 비밀번호, 이름, 학과, 학번, 이메일, 전화번호, 주소, 프로필 사진 입력을 받아야 함
로그인 - 아이디, 비밀번호 입력 받아 로그인함
회원 정보 보기 - 이름, 학과, 학번을 조회할 수 있어야 함
회원 정보 수정 - 학과, 학번, 이메일, 전화번호, 주소, 프로필 사진을 수정할 수 있어야 함
Q&A 작성 - 카테고리, 제목, 내용을 입력해야 함
Q&A 보기 - 카데고리, 제목, 내용, 작성일, 작성자 이름, 학과, 프로필 사진을 보여줘야 함
Q&A 댓글 - 내용을 입력해야 함
Q&A 댓글 보기 - 내용, 작성일, 작성자 이름, 학과, 프로필 사진을 보여줘야 함
Entity(객체) : 회원, Q&A, Q&A 댓글
- 속성으로 인해 설명 당하는 것
attribute(속성)
- 회원의 속성 : 아이디, 비밀번호, 비밀번호 확인, 이름, 학과, 학번, 이메일, 전화번호, 주소, 프로필 사진
- Q&A의 속성 : 카데고리, 제목, 내용, 작성일, 작성자 이름, 학과, 프로필 사진
- Q&A 댓글의 속성 : 내용, 작성일, 작성자 이름, 학과, 프로필 사진
relationship(관계)
- 행동과 동작들을 표현함
회원이 Q&A를 작성한다. /회원 1 : n Q&A/
회원은 반드시 Q&A 를 작성할 필요는 없다.
Q&A는 반드시 회원에 의해 작성되어야 한다.
회원이 Q&A 댓글을 작성한다. /회원 1 : n Q&A 댓글/
회원은 반드시 Q&A 댓글을 작성할 필요는 없다.
Q&A 댓글은 반드시 회원에 의해 작성되어야 한다.
Q&A는 Q&A 댓글을 포함한다. /Q&A 1 : n Q&A 댓글/
Q&A는 반드시 Q&A 댓글을 포함할 필요는 없다.
Q&A 댓글은 반드시 Q&A에 포함되어야 한다.
회원이 Q&A에 댓글을 단다. /회원 n : m Q&A/
회원은 반드시 Q&A 댓글을 작성할 필요는 없다.
Q&A는 반드시 회원에 의해 댓글이 작성될 필요는 없다.
BCNF : 3정규형이 이루어진, 모든 함수 종속성이 후보키에 대해서 종속
제4정규형 : BCNF, 다치 종속을 제거
제5정규형 : 모든 종속이 조인 종속에 기반하여야함
view
: 논리 적으로만 존재하는 읽기 전용의 가상의 테이블
: 제한된 보기를 제공할 때, 특정 쿼리문(select)을 미리 작성해두는 용도
create view employee_view as
select
E.employee_number as employee_number,
E.name as employee_name,
D.code as department_code,
D.name as department_name,
D.tel_number as department_tel_number
from employee as E left join department as D
on E.department_code = D.code;
select * from employee_view;
select * from employee_view where employee_name = '홍길동';
view는 물리적으로 데이터 복사되는 것이 아니고 논리적으로 결과를 불러오는 것이기 때문에 view 자체로 insert, update, delete가 불가능
# insert into employee_view values (10, '김길동', 'MM', '물류부', '010-1111-1114'); -- 에러
* insert불가능 무조건 조회만 가능
인덱스 (index) : 테이블에서 데이터를 빠르게 조회할 수 있도록 도와주는 요소
create index department_tel_number_index
on department (tel_number);
select * from department where tel_number = '010-1111-1111';
create index department_index_1
on department (name, tel_number);
select * from department where name = '인사부' and tel_number = '010-1111-1111';
select * from department where tel_number = '010-1111-1111' and name = '인사부'; # 속도가 느려짐 # 어떤걸 먼저 찾는지에 대한 순서도 중요함
drop index department_index_1 on department; # 인덱스 삭제
* 자주 사용하는 컬럼들은 앞에 둬야 검색 속도가 빨라짐
'AWS(산대특)' 카테고리의 다른 글
DAY 17 - MySQL (0) | 2024.02.14 |
---|---|
DAY 16 - MySQL (0) | 2024.02.13 |
DAY 14 - MysQL (0) | 2024.02.07 |
DAY 13 - MySQL (0) | 2024.02.06 |
DAY 12 - MySQL (0) | 2024.02.05 |