PC

블로그 이미지

DAVID

160712: 83회차

Programming 2016. 7. 12. 14:25

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


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
블로그 이미지

by DAVID

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

링크

카테고리

PC (112)
Programming (109)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
DAVID's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

PC

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • PC (112)
    • Programming (109)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바