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
운영게시판
최근게시물
DBMS Q&A 482 게시물 읽기
No. 482
Re: 다시한번 고민해 주셔요~ ㅠㅠ
작성자
정회민(hmjung97)
작성일
2002-08-01 14:18
조회수
5,667

----------------------------------------------------------

전형적인 분류 문제죠.

 

자기 자신을 참조하는 테이블을 만드세요. 간단히 적어보자면...

 

분류 부모ID int

분류ID 자동증가

깊이 int

분류명 string

 

모양이 되겠지요. 최상위 분류의 경우는 분류 부모 ID에 임의 수를 넣지요(저의 경우는 0을 넣어염)

 

데이터의 모양은 다음과 같겠군요.

(0, 1, 1, 모니터)

(1, 2, 2, LCD)

(1, 3, 2, PDP)...

 

이런 상태에서 부모 분류가 모니터인 것을 검색하면

LCD, PDP 등의 하위 분류가 나오겠지요.

 

그럼 즐거운 하루 되세요.

------------------------------------------------

 

물론 이런식이 좋기는 합니다만, 저같은 경우 분류는 거의 비정규화된

테이블을 이용하는데, 혹시나 좋은 방법이 있을까 하여 묻습니다.

 

제가 쓰는 것을 간력히 표현하면,

코드, 첫번째 분류, 두번째 분류

b-00-00, 서적,null

b-01-00, 서적, 인문학

b-02-00, 서적, 과학

c-00-00, 잡화, null

c-01-00, 잡화, 포장지

 

좀 우습죠? 그러나 아주 잘 작동 합니다.

가장 큰 약점은 역시 질문자의 경우처럼 카테고리가 많이 확장할 경우인데..

 

우선 서적류를 다 표시해라

 

select * from 상품 where 카테고리 like 'b%';

가뿐합니다.

 

위의 것의 경우는

 

카테고리가 1이고 엄마카테고리가 1인 카테고리와 그 카테고리넘버를

엄마로 가지는 카테고리를 모두 모은다.

select * from 상품 where 카테고리 in (모은것);

 

이런것 밖에 생각이 안나는 군요.

 

물론 위의 것의 경우에도 이렇게 쓰면 똑같아 집니다.

자신넘버, 부모코드, 카테고리코드,이름

1,0,b-00-00,서적

2,1,b-01-00,인문학

...

 

근데 보면 어이없죠?

왜냐면, " 서적> 인문학> 국문학 " 이런것을 표시하려면,

 

위의 것은

select * from 카테고리 where 코드='국문학코드';

해서

print (첫번째 이름 > 두번째 이름 > 세번째 이름) ;

 

이렇게 쓰면 되지만

 

아래것은 또 찾아해맨다음 써줘야 하니까요.

 

완전 동적으로 늘어났다 줄수 밖에 없는 분류가 아니라면

 

딱 비정규화 하기에 좋은 것이 카테고리 테이블이 아닌가 합니다.

 

코드가 더 늘어난다면 b-00-00-00으로 더 늘리면 되고

 

like 쿼리를 이용하면 쿼리 수정도 사실상 없앨수 있죠.

 

혼합하여 쓸수도 있겠습니다.

 

좋은 방법 없나요?

[Top]
No.
제목
작성자
작성일
조회
478디비연결할 때 OLE DB와 ODBC 중에서... [2]
전지영
2002-07-31
5770
480┕>Re: 아래에 comment 달아주신분들 넘 감사해요~*^^*(냉텅)
전지영
2002-08-01 11:28:41
5538
472도움을 주실분 찾습니다. [1]
박창수
2002-07-26
5394
470쿼리 방법을 알려주시면 감사하겠습니다. [2]
주성열
2002-07-26
5626
468DB 구축에 대해 조언을 좀 해주세요.. [2]
Terry
2002-07-25
5633
482┕>Re: 다시한번 고민해 주셔요~ ㅠㅠ
정회민
2002-08-01 14:18:11
5667
466[질문] 문자열 카운트 쿼리 [2]
앤디
2002-07-24
5700
463DB tool의 비교를 부탁드립니다...
yjji
2002-07-23
5884
451[질문] database 가격 아시는분 계시나요?
오영택
2002-07-15
5810
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다