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
운영게시판
최근게시물
PostgreSQL Q&A 4428 게시물 읽기
No. 4428
설계시 의문점 2가지, 사용자 삭제시
작성자
박기원
작성일
2002-11-05 16:58
조회수
1,182

안녕하세요?

만약에요 쇼핑몰에서 user가 있는데여 과거에 상품을 구입했던 이력이 전부 db에 저장되지 않습니깐....

근데 그 구입한 이력에

물건명 | 유저아이디 | 구입일...

이어폰 | lovelove | 2001-1-5

이렇게 되어 있는데 유저 아이디 컬럼을 user와 refrence를 걸었습니다.

그래서 유저가 탈퇴를 할려고 유저의 정보를 지울려고 하면 r.k때문에 지워지지가 않게 됩니다.

이런걸 해결 할려면 어케 해야하나요?

유저가 구입했던 이력은 꼬옥 간직해야하거든여

제가 우선적으로 생각했던 것은 user 정보 테이블에 active라는 boolean컬럼을 달아서 가입된 유저면 true를 탈퇴한 유저면 false를 둘려고 하거든여..

 

참 그리고 하나 더 질문을 하자면요

쇼핑몰(shopping) - 옷(cloth) - 윗옷 (shirts)

- 바지(pants)

책(book) - 프로그래밍(programming)

- 그래픽(graphic)

 

이렇게 구성되어 있는데요 코드를 관리 할려고 하거든여

code | 이름 | parents

shopping| 쇼핑몰 | null(or 자기자신)

cloth | 옷 | shopping

book | 책 | shopping

이런식으로 할때여 parents에 rk키를 걸을려고 하거든여

자기 자신 테이블에 code라는 것을요

이렇게 해도 되나여?

아직 해보지는 않아서요......

만약에 이렇게 해서 문제 될 것은 없나여?

 

이런식으로 설계하면 확장성이 좋다고 하던데 반대로 단점은 뭐가 있나여?

그럼 부탁드립니다.

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

흠냐 두가지 질문에 대한것은 모르겟구요...

 

첫번째꺼에 대해서...^^'' 그냥 들어주세요..

 

고객의 내역은 상관이 없겟지만은...고객의 프로파일은 지워주셔야 합니다. 탈퇴를 했다면...가지고 있으면...불법(?? 불법으로 알고 있습니다만 정확한건 모르겟네요)이겟지요..

 

뭐 불법이고 뭐시고 간에...만약 제 데이터가 탈퇴를 했는데 계속 남아있다면...-,.ㅡ;; 기분이 참 그렇네요,,흐흐~ 도덕적으로라도 지워야 하는게 옳다고 봅니다. (실제로 안그런 데가 많지만...-,.-)

 

저도 첨에 남겨둘려고 했는데...사실 필요도 없는데 가지고 있어봐야 좋을것도 없고...반대로 입장을 바꾸놓고 생각하니 좀 글터군요..그래서 다 삭제해버림돠

백록화(rocka)님이 2002-11-05 17:20에 작성한 댓글입니다.

FK로 지정하지 마시고 트리거로 on delete set null 을 쓰시면 될듯 합니다 사용법은 DIY -_-;;;

두번째는 자신의 것에는 FK를 걸수 없는건 당연하죠. 그럴때도 역시 트리거를 쓰시거나 삭제할때 where code='shoping' or parents='shoping'

이런식으로 지워주시면 됩니다.

저는 이렇게 구현하고 있습니다 =_=

신기배(nonun)님이 2002-11-05 18:46에 작성한 댓글입니다.

 

김황수님이 2002-11-07 20:34에 작성한 댓글입니다.

첫번째는 일단 references key를 안걸면되고요.

이렇게 말하면 무성의 할테고..^^

 

references key를 걸때 액션에 on delete set default 나 set null 로 잡으면 될거 같습니다.

 

두번째는 셀프조인으로 분류를 추적하는문제인데

비숫한 사례가 하나 있었는데..가물하넹..흠

 

그전에 학술논문검색 구축때..

 

그렇게분류를 잡았다가 갑자기 화면이 바뀌어 query한방으로 한화면에 깊이 4단계까지 모두 찾아 출력해야되는 문제에 봉착햇던거 같습니다.

 

그때 어떻게 분명히 해결은 햇는데..상당히 고심했던기억이 납니다...^^

도움이 되었는지 모르겠습니다.

김황수님이 2002-11-07 20:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4431변수명의 끝수를 버린다고 하는데... [1]
박기원
2002-11-10
812
4430mask 주소를 비트로 환산하는 함수
신현호
2002-11-08
921
4429FATAL 1 : No pg_hba.conf entry : 다시 [2]
Henry
2002-11-06
1454
4428설계시 의문점 2가지, 사용자 삭제시 [4]
박기원
2002-11-05
1182
4427FATAL 1 : No pg_hba.conf entry [2]
Henry
2002-11-04
1354
4426질문)table이 존재할때만 쿼리날리는 방법? [1]
가람이
2002-11-04
1038
4425데이타는 얼마 안되는데 서버에 생성된 db 파일 사이즈가 엄청 커요. [5]
김시연
2002-11-03
1158
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다