정말 희한한 일입니다. 두번째...
CMS/프레임워크 | XE 1.x |
---|---|
개발 언어 | PHP 5.x |
문제 페이지 주소 | 비공개 (작성 후 5일 경과) |
한 게시판에 있는 2개의 게시물에 댓글을 작성하였습니다.
그 사이에 작성자의 닉네임을 바꿨구요.
첫번째 댓글의 작성자에는 "예전 닉네임"이 그대로...
두번째 댓글의 작성자에는 "변경 닉에임"이 적용..
이럴 수도 있나요?
혹시 캐시 문제인가? 해서 "캐시 파일 재생성", "하루 경과 후 확인"... 등등
여전히 그대로입니다.
댓글 정보에 들어가는 작성자가 xe_member의 기본 키이고...
닉네임이 변경되면 같이 바뀌어야 하는게 정상인데.
이건 정말 이상하네요~
아래 그림을 보면 동일인이 다른 게실물에 각각 남긴 댓글인데...
지금 보아하니, 댓글을 남긴 시점의 닉네임이 댓글 정보에 남는거 같고,
이후 회원 정보에서 닉네임을 변경해도 기존 댓글에 딸린 작성자의 닉네임은 변하지 않는거 같습니다.
이건 데이터베이스 원론에서 이야기하는 Anomaly 현상이고, 3NF 정규형에도 안 맞는거 같는데...
헐~~ 저의 추측이 맞는 건가요? 아니면 제가 뭘 놓친게 있는거지?
댓글 6
댓글을 남긴 시점의 닉네임이 박제되는 것이 정상입니다.
예를 들어 여러 사람이 여기에 댓글을 달면서 코딩펀님이 어쩌고~ 코딩펀님이 저쩌고~ 라며 갑론을박을 했는데 내일 코딩펀님이 닉네임을 바꿔버리신다면? 며칠 후 이 글을 검색해서 들어오는 사람은 대체 누구를 지칭하는 건지 전혀 알 수 없겠지요. 닉네임 변경시 그 닉네임을 언급하는 타인의 글이나 댓글 내용까지 싹 다 바꿔주지 않는 한...
글/댓글 테이블의 닉네임 필드는 글쓴이의 현재 닉네임이 아니라 작성 시점의 닉네임을 의미한다고 생각하면 3NF에 위배되지 않습니다. 비회원 글쓰기를 허용하는 사이트에서는 member_srl 없이 닉네임만 들어갈 수도 있으니, member 테이블을 조인해서 글쓴이 정보를 불러올 수 있다는 보장도 없고요.
저는 현재 시점의 닉네임을 표시하는 것도 여러 혼선이 생기는 것 외 현재 시점의 닉네임을 매번 회원정보에서 조회하는 것은 자원 낭비라는 생각이 듭니다. 꼭 필요한 사이트는 스킨에서 해당 닉네임 부분을 저장된 문서가 아닌 회원db에서 매번 불러오게 고쳐야 한다 생각하구요.
지금 처럼 문서출력에 필요한 부분을 문서저장시 함께 저장해 문서 조회 만으로 모든 정보를 출력하는게 리소스 사용에 효율적이라는 생각이 드네요.
대신 절충안으로 닉네임 변경시 문서,댓글에 작성자 닉네임을 모두 바꿔주는 자료를 이용해 db를 수정해줍니다.
4월 1일을 기념해 닉변했는데 박제되는 거군요