database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30061 게시물 읽기
No. 30061
D/B 정규화 후 정규화 전처럼 view table만드는 방법 질문
작성자
김동진
작성일
2011-09-21 10:38
조회수
7,877

안녕하세요. D/B 설계 초보입니다.

전화번호부를 DBMS에 적용하려고 하는데 튜플들은 아래와 같습니다.

-phonebook-
key, 이름, 번호1, 번호1_hotkey, 번호2, 번호2_hotkey, 번호3, 번호3_hotkey, 그룹, 이메일, 생년월일, 홈페이지, 집주소

이렇게 되어 있는걸 정규화(번호관련 튜플 분리) 해서

-phonebook_main-
key, 이름, 그룹, 이메일, 생년월일, 홈페이지, 집주소

-phonebook_humber-
key, 번호, hotkey, 외래키(phonebook_main)

두개의 테이블로 만들었습니다.

근데 join을 하든 뭘로 하든 두 테이블을 합치면,

이름, 번호1, 번호1_hotkey, 그룹, 이메일, 생년월일, 홈페이지, 집주소
이름, 번호2, 번호2_hotkey, 그룹, 이메일, 생년월일, 홈페이지, 집주소
이름, 번호3, 번호3_hotkey, 그룹, 이메일, 생년월일, 홈페이지, 집주소

이런식의 결과가 나오는데요.
정규화하기 전과 같이 아래처럼 view table을 만들려면 어떻게 해야 하는지요??

"이름, 번호1, 번호1_hotkey, 번호2, 번호2_hotkey, 번호3, 번호3_hotkey, 그룹, 이메일, 생년월일, 홈페이지, 집주소"

이 글에 대한 댓글이 총 1건 있습니다.

번호1, 번호2, 번호3 과같이 번호의 순서가 있는경우에 phonebook_number 테이블에 순번 컬럼이 하나 있어야 겠네요.

순번컬럼을 추가하는경우에

select a.이름,

max(case when b.순번=1 then b.번호 end) 번호1,

max(case when b.순번=1 then b.h end) 번호1_hotkey,

max(case when b.순번=2 then b.번호 end) 번호2,

max(case when b.순번=2 then b.h end) 번호2_hotkey,

max(case when b.순번=3 then b.번호 end) 번호3,

max(case when b.순번=3 then b.h end) 번호3_hotkey,

a.그룹, a.이메일, a.생년월일, a.홈페이지, a.집주소

from phonebook_main a, phonebook_number b

where a.key=b.외래키

group by a.이름

 

1님이 2011-09-22 17:49에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30064update a set [1]
김양훈
2011-09-30
7967
30063Control center에서 테이블복사. [3]
이기자
2011-09-26
7526
30062이력관리 필드에 내용 추가를 하고 싶습니다. [1]
장기정
2011-09-21
7538
30061D/B 정규화 후 정규화 전처럼 view table만드는 방법 질문 [1]
김동진
2011-09-21
7877
30060공란을 0으로 불러오기 [1]
김양훈
2011-09-19
7446
30059데이터 축약정리 문의(Curser/Fetch/Procedure 관련) [2]
딘스
2011-09-18
8382
30058따옴표 문제...
정종영
2011-09-18
7325
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다