미니프로젝트2

링크 : 프로젝트파일 보기(GitHub)

1.주제

미용실 디자이너, 손님 테이블 생성

2.엔티티 관계도

hairSalon_Entity

3.구성내용

고객과 디자이너에 대한 테이블이 존재하고, 고객과 디자이너는 각각 시술받은 횟수, 시술한 횟수를 고객랭크테이블과 디자이너랭크테이블에서 참조해 랭크가 정해지도록 설정했다. 또한 디자이너기본키와 고객기본키를 담은 예약된 내용을 테이블로 저장하게 설정했고, 프로시저와 트리거를 이용해 예약된 내용 테이블에 update가 실행되면 고객과 디자이너의 랭크가 고객랭크테이블과 디자이너랭크테이블을 참조해 갱신되도록 설정했다.

  • 테이블 customers테이블 : 담당디자이너 정보(d_id필드, designers테이블 기본키d_id를 참조한다), 고객랭크(c_rank필드, customers_rank테이블 기본키crk_id를 참조한다) customers_rank테이블 : crk_low와 crk_high를 설정해주어 해당 랭크의 범위를 설정한다 designers테이블 : 디자이너랭크(d_rank필드, designers_rank테이블 기본키drk_id를 참조한다) desingers_rank테이블 : drk_low와 drk_high를 설정해주어 해당 랭크의 범위를 설정한다 design_record테이블 : 예약된디자이너정보(d_id필드, designers테이블 기본키d_id를 참조한다), 예약된고객정보(c_id, customers테이블 기본키c_id를 참조한다)

  • 프로시저 예제 ‘call design_insert_data( 값1, 값2, 값3 );’ 다음과 같이 간단하게 designers테이블에 insert할 수 있는 프로시저를 생성했다.

create procedure designers_insert_data(
	d_name varchar(20),
	d_phNum varchar(20),
	d_career int
)
begin
	insert into designers (d_name,d_phNum,d_career) values (d_name,d_phNum,d_career);
end;
  • 트리거 예제 desgin_record테이블에 insert가 실행되면 발동되어 designers테이블과 customers테이블의 d_count, c_count, d_rank, c_rank가 update되는 트리거를 생성했다.
create trigger design_record_trigger
before insert
on design_record
for each row 
begin 
	update designers set d_count=d_count+1 where designers.d_id=new.d_id;
	update customers set c_count=c_count+1 where customers.c_id=new.c_id;

	update designers set d_rank=(select drk_id from designers_rank where d_count between drk_low and drk_high) where designers.d_id=new.d_id;
	update customers set c_rank=(select crk_id from customers_rank where c_count between crk_low and crk_high) where customers.c_id=new.c_id;
end;

results matching ""

    No results matching ""