개발 Q&A

제목 [초보]DB 조인 질문
글쓴이 헛발이 작성시각 2012/08/25 09:37:42
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 18144   RSS
초보자라서 초보 질문 올립니다.. 다소 불편하시더라도 자세한 지도 부탁드립니다...
테이블이 두개 있습니다.. 용돈기입장 과 기입자 테이블 이렇게 있습니다.

1. 기입자 테이블에는
-----------------------------------------
아이디  이름
-----------------------------------------
1             전지현
2             이효리
3             박근혜

2. 용돈기입장 테이블에는 다음과 같죠..
-------------------------------------------------------
아이디  과목          기입자아이디
-------------------------------------------------------
1             달걀          3
2             택시비      3
3             콩나물      1


이런 데이터가 있습니다.
단순히 3번 기입자 박근혜를 삭제 하려 합니다...
그럴때 어떻게 처리 해야 하는지가 알고 싶습니다....
지난번에도 알려 주셨는데 아직 이해가 가질 않습니다...




첫번째 방법으로는 기입자 테이블에 삭제 처리 필드로 삭제만 처리 하고 기존 데이터는 그대로
-----------------------------------------
아이디  이름            삭제
-----------------------------------------
1             전지현
2             이효리
3             박근혜        x


근데 이렇게 할 경우 궁굼한 점이 있습니다.
이럴 경우에는 기입자 리스트에서 삭제필드를 찾아 안 보여 주면 그만이라고 생각했습니다만..
문제는 용돈기입장에서의 처리 입니다.

즉 용돈기입장 목록을 보는 리스트 화면이 있다고 생각해 보면요..
-------------------------------------------------------
아이디  과목          기입자
-------------------------------------------------------
1             달걀          박근혜
2             택시비      박근혜
3             콩나물      전지현

이런 결과를 보여주기 위해서 테이블을 Join하여 리스트를 뽑아 보여 주게 됩니다.
그런데 기입자 누구나 용돈기입장의 내용을 변경 수정할수 있다고 가정한다면..

그래서 2번 택시비를 클릭해서 수정화면으로 넘어 갔다고 생각해 봅시다..
그러면 수정화면에 다음과 같이 됩니다..

과목 : [택시비] 입력필드
기입자 : [  ↓  ]Select필드
               [ 전지현 ]
               [ 이효리 ]

와 같이 박근혜는 삭제되어 보여지지 않게 되죠...
하지만 하고 싶었던건 "택시비"를 "모범택시비"로 변경 하고 기입자는 그냥 두고 싶었답니다..
하지만 선택항목에 박근혜가 삭제되어 보여지지 않게 되어 다른 사람을 선택할수 밖엔 없죠..

그 부분이 제일 궁굼한 점입니다...

단순하게 생각하면 과목필드만 수정하는 화면으로 만들고 기입자 변경 하는건 따로 만들면  되지 않을까 합니다만..
지금은 예가 두개일 분이지만 과목 필드만 입력필드로 약 30개 필드가 모두 선택필드로 되어 있다고 생각하면..
30개의 선택필드를 모두 분리해서 수정화면을 만드는건 좀 이상하다고 생각이 되거든요..
그렇다고 삭제된 기입자를 수정화면에선 보여지게 할수 있다면 또 이것도 모순이라고 생각이 들더라구요..




그렇다고 두번재 방법으로..
기입자를 삭제 하게 된다면 실제로 삭제 처리 해 버리고 연결된 용돈 기입장 에도 관리자를 없애버리는 방법
즉 다음과 같이요...
-----------------------------------------
아이디  이름
-----------------------------------------
1             전지현
2             이효리


2. 용돈기입장 테이블에는 다음과 같죠..
-------------------------------------------------------
아이디  과목          기입자아이디
-------------------------------------------------------
1             달걀         
2             택시비     
3             콩나물      1

하지만 이렇게 한다면 나중에 용돈기입장을 보게 되면 달걀과 택시비는 누가 샀는지 알수 없게 되므로 이것은
분명 아니라고 생각이 되는데요..

고수님들은 이결 경우 어떻게 해 주시나요???
초보에서 한줄기 빛이 되어 주세요~
 다음글 Data 쿼리 값 가져 올 때.. (4)
 이전글 맥에서 코다 를 설치 할려하니 에러가 나네요. (1)

댓글

니삼 / 2012/08/25 15:00:20 / 추천 0
박근혜..를 삭제하지 않고 계정삭제체크 필드를 만드는 방법도 있습니다.
박근혜를 지워버리면 박근혜를 쓰는 다른 테이블까지 이렇게 꼬이니까요.

더좋은 답변은 아랫분들이 ㅋ
변종원(웅파) / 2012/08/26 22:30:02 / 추천 0
이 부분은 조인의 문제가 아니라 설계에서 선택의 문제입니다.

필드를 삭제한거로 보여주자니 이상하고 삭제를 하자니 기입장에서 안보일것이고..

설계(또는 기획)에서 명확하게 해야합니다. 왜 그렇게 만드는지, 그게 꼭 필요한지,

삭제된 사용자의 항목도 보여주고 수정도 하게 해야한다면(이해가 안되는 프로세스 이기는 합니다만)

삭제필드로 삭제여부를 넣으시고 기입자 셀렉트 부분에서 박근혜[삭제유저] 형태로 

구분은 할 수 있게 보여주면 될 것 같습니다.

기입자를 삭제하고 용돈기입장 조인할때 right join해서 기입자가 없는 것들을 하나로 묶어서 가져올 수는
있습니다. 그것도 생각해보세요.
헛발이 / 2012/08/27 07:57:51 / 추천 0
음... 그렇군요..

초보자의 길은 멀기도 멀군요.. ㅠㅠ

답변 감사합니다..
지지고 / 2012/09/27 19:49:51 / 추천 0
박근혜를 삭제한다... 시기가 시기인지라 보다가 깜짝 놀랐습니다. ㅎㅎ
한대승(불의회상) / 2012/09/27 20:39:04 / 추천 0
오... 이걸로 포럼 디스 당하나요??? ^^