종료하기 전 티스토리 네이버 로그아웃 할 것
1. 툴
동일
추가시:
2. 폴더
동일
추가시:
3. 사용할 사이트
동일
추가시:
4. 공부하는 것
[03] 제약 조건(PK,FK) 실습 - 공지사항
부서 사무실 제목 내용 등록일
--------------------------------------------------------------------------------------------
전산부 101호 업무 전산화 안건 5월 22일 공지사항 2007-05-20
기획부 201호 업무 발전 방향 5월 23일 공지사항 2007-05-20
생산부 301호 생산량 증가 계획 5월 24일 공지사항 2007-05-22
기술부 407호 생산자재 A/S건 5월 25일 공지사항 2007-05-23
전산부 101호 여름 휴가 건 5월 22일 공지사항 2007-05-20
기획부 201호 추석 상여금 안내 5월 23일 공지사항 2007-05-20
생산부 301호 생산부 잔업 안내 5월 24일 공지사항 2007-05-22
기술부 407호 새로운 장비 도입 5월 25일 공지사항 2007-05-23
---------------------------------------------------------------------------------------------
위의 데이터를 표현하기위해 테이블을 2개로 분리후(정규화)
JOIN을 하여 위의 데이터가 출력되도록 쿼리를 작성하세요.
※ '부서', '사무실' 컬럼은 중복됨으로 분리할 필요가 있습니다.
테이블1: 부서 사무실
테이블2: 제목 내용 등록일
create table 회사(
부서 varchar(12) not null,
사무실 varchar(12) not null,
constraint PK_회사 primary key(부서)
);
create table 공지사항(
부서 varchar(12) not null,
제목 varchar(100) not null,
내용 varchar(100) not null,
등록일 varchar(30) not null,
constraint PK_공지사항 primary key(제목),
constraint FK_공지사항 foreign key(부서) references 회사(부서)
);
select * from 회사
select * from 공지사항
insert into 회사(부서,사무실) values('전산부', '101호');
insert into 회사(부서,사무실) values('기획부', '201호');
insert into 회사(부서,사무실) values('생산부', '301호');
insert into 회사(부서,사무실) values('기술부', '407호');
insert into 공지사항(부서,제목, 내용, 등록일) values('전산부', '업무 전산화 안건', '5월 22일 회의', '2007-05-20');
insert into 공지사항(부서,제목, 내용, 등록일) values('기획부', '업무 발전 방향', '5월 23일 회의', '2007-05-20');
insert into 공지사항(부서,제목, 내용, 등록일) values('생산부', '생산량 증가 계획', '5월 24일 회의', '2007-05-22');
insert into 공지사항(부서,제목, 내용, 등록일) values('기술부', '생산자재 A/S건', '5월 25일 회의', '2007-05-23');
insert into 공지사항(부서,제목, 내용, 등록일) values('전산부', '여름 휴가 건', '5월 22일 회의', '2007-05-20');
insert into 공지사항(부서,제목, 내용, 등록일) values('기획부', '추석 상여금 안내', '5월 23일 회의', '2007-05-20');
insert into 공지사항(부서,제목, 내용, 등록일) values('생산부', '생산부 잔업 안내', '5월 24일 회의', '2007-05-22');
insert into 공지사항(부서,제목, 내용, 등록일) values('기술부', '새로운 장비 도입', '5월 25일 회의', '2007-05-23');
select s.부서, s.사무실, e.제목, e.내용, e.등록일
from 회사 s, 공지사항 e
where s.부서 = e.부서
delete from 회사 where 부서 = '전산부';
-- child record found 로 실패
delete from 공지사항 where 부서 = '전산부';
delete from 회사 where 부서 = '전산부';
-- child 부터 삭제했으므로 성공
drop table 회사
-- foreign key 참조로 삭제 실패
drop table 공지사항
drop table 회사
-- 참조값 삭제 후 삭제 성공
--영문패치--
[03] 제약 조건(PK,FK) 실습 - 공지사항
부서 사무실 제목 내용 등록일
--------------------------------------------------------------------------------------------
전산부 101호 업무 전산화 안건 5월 22일 공지사항 2007-05-20
기획부 201호 업무 발전 방향 5월 23일 공지사항 2007-05-20
생산부 301호 생산량 증가 계획 5월 24일 공지사항 2007-05-22
기술부 407호 생산자재 A/S건 5월 25일 공지사항 2007-05-23
전산부 101호 여름 휴가 건 5월 22일 공지사항 2007-05-20
기획부 201호 추석 상여금 안내 5월 23일 공지사항 2007-05-20
생산부 301호 생산부 잔업 안내 5월 24일 공지사항 2007-05-22
기술부 407호 새로운 장비 도입 5월 25일 공지사항 2007-05-23
---------------------------------------------------------------------------------------------
위의 데이터를 표현하기위해 테이블을 2개로 분리후(정규화)
JOIN을 하여 위의 데이터가 출력되도록 쿼리를 작성하세요.
※ '부서', '사무실' 컬럼은 중복됨으로 분리할 필요가 있습니다.
create table company(
part varchar(12) not null, -- 부서
office varchar(12) not null, -- 사무실
constraint PK_company primary key(part)
);
create table notice(
part varchar(12) not null, -- 부서
title varchar(100) not null, -- 제목
content varchar(100) not null, -- 내용
regdate varchar(30) not null, -- 등록일
constraint PK_notice primary key(title), -- 기본 키
constraint FK_notice foreign key(part) references company(part) -- 외래 키
);
select * from company
select * from notice
insert into company(part,office) values('전산부', '101호');
insert into company(part,office) values('기획부', '201호');
insert into company(part,office) values('생산부', '301호');
insert into company(part,office) values('기술부', '407호');
insert into notice(part,title, content, regdate) values('전산부', '업무 전산화 안건', '5월 22일 회의', '2007-05-20');
insert into notice(part,title, content, regdate) values('기획부', '업무 발전 방향', '5월 23일 회의', '2007-05-20');
insert into notice(part,title, content, regdate) values('생산부', '생산량 증가 계획', '5월 24일 회의', '2007-05-22');
insert into notice(part,title, content, regdate) values('기술부', '생산자재 A/S건', '5월 25일 회의', '2007-05-23');
insert into notice(part,title, content, regdate) values('전산부', '여름 휴가 건', '5월 22일 회의', '2007-05-20');
insert into notice(part,title, content, regdate) values('기획부', '추석 상여금 안내', '5월 23일 회의', '2007-05-20');
insert into notice(part,title, content, regdate) values('생산부', '생산부 잔업 안내', '5월 24일 회의', '2007-05-22');
insert into notice(part,title, content, regdate) values('기술부', '새로운 장비 도입', '5월 25일 회의', '2007-05-23');
select s.part 부서, s.office 사무실, e.title 제목, e.content 내용, e.regdate 등록일
from company s, notice e
where s.part = e.part
delete from company where part = '전산부';
-- child record found 로 실패
delete from notice where part = '전산부';
delete from company where part = '전산부';
-- child 부터 삭제했으므로 성공
drop table company
-- foreign key 참조로 삭제 실패
drop table notice
drop table company
-- 참조값 삭제 후 삭제 성공
5. 수업
진도:
hw:
6. 할것
1. 리눅스마스터 시험 보기
2. git에 올리는 법 오늘 안에 해보기
8월 14일