시험범위 내장함수 ~ 배운데
트리거 : 특정 조건이 만족하면 저절로 실행되는 함수
행트리거 for each row : 각각 실행
트리거 이벤트
after : 동작 수행 후
before : 동작 수행 전
문장 트리거
insert update delete 문 을 수행할떄
after insert on triaaa for each row
begin
sql 쿼리;
end;
형태
트리거를 이용해서 한 테이블에 insert를 하면 다른 테이블은 delete나 update 등을 하게 할 수 있다
위의 트리거를 적용하기 위해서 상품, 주문 테이블을 만들어본다
create database examtri;
use examtri;
create table goods(
proname varchar(20) primary key,
account int
);
insert into goods values('사과', 100);
insert into goods values('포도', 100);
insert into goods values('딸기', 100);
desc goods;
select * from goods;
alter table goods modify account int;
create table ordering(
orderno int auto_increment primary key,
userid varchar(20),
proname varchar(20),
ordercount int
);
create table deliver(
delno int auto_increment primary key,
proname varchar(20),
delcount int
);
-- ordering 주문(insert)시 goods 테이블의 account 개수변경
delimiter //
create trigger triin
after insert on ordering for each row
begin
update goods
set account = account - new.ordercount
where proname = new.proname;
end;//
-- goods 테이블의 account가 감소하면 감소한 만큼 deliver 테이블에서 배송
delimiter //
create trigger triout
after update on goods for each row
begin
insert into deliver (proname, delcount)
values (new.proname, old.account - new.account);
end;//
-- ordering에 값을 추가하면 다른 테이블들도 변경된다!
insert into ordering (userid, proname, ordercount)
values ('hong','사과',10);
select * from goods;
select * from ordering;
select * from deliver;
데이터베이스 설계
1. 요구사항 분석(요구사항 명세서 만들기)
2. 개념적 설계(ER 다이어그램)
3. 논리적 설계(제약조건, 릴레이션 설계)
4. 물리적 설계
• 개념적 설계 - 개체 도출, 관계 추출, erd 다이어그램
!시험
관계를 추출한 결과, 위의 관계는 N : M 관계라 새로운 엔티티 둬서 해소시켜야한다
1 : N 관계일때는 선택적으로 새로운 엔티티를 둘 수 있고, 요구사항을 충족시키기 위해서 새로운 엔티티를 만들 수 있다
• 논리적 설계(데이터 모델링)
논리적 설계를 통해서 릴레이션 스키마를 만든다
개념적 설계 단계의 결과물인 E-R 다이어그램을 릴레이션 스키마로 변환
릴레이션 스키마로 변환 후 속성의 데이터 타입, 길이, 널 값 허용 여부, 기본 값,
제약조건 등을 세부적으로 결정하고 결과를 문서화시킴
논리적 설계 규칙 <- 시험에 나올 수도 있다!
• 규칙 1 : 모든 개체는 릴레이션으로 변환한다.
• 규칙 2 : 다대다(n:m) 관계는 릴레이션으로 변환한다.
• 규칙 3 : 일대다(1:n) 관계는 외래키로 표현한다.
• 규칙 4 : 일대일(1:1) 관계는 외래키로 표현한다.
• 규칙 5 : 다중 값 속성은 릴레이션으로 변환한다.
(ex - 주소를 입력할때는 다양한 값을 가지고 있으니, 다양한 값들을 릴레이션을 작성해서 주소에 대한 속성들을 정리한다)
erd에서는 타원을 두개 그리는 방식으로 정리
논리적 설계에서 스키마까지 작성한다