160712: 83회차

종료하기 전 티스토리 네이버 로그아웃 할 것


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일

'Programming' 카테고리의 다른 글

160714: 85회차  (0) 2016.07.14
160713: 84회차  (0) 2016.07.13
160711: 82회차  (0) 2016.07.11
160708: 81회차  (0) 2016.07.11
160707: 80회차  (0) 2016.07.07
Posted by DAVID