Extra Form
PHP PHP 5.6
CMS XpressEngine

한 게시판에 있는 2개의 게시물에 댓글을 작성하였습니다.

그 사이에 작성자의 닉네임을 바꿨구요.

 

첫번째 댓글의 작성자에는 "예전 닉네임"이 그대로...

두번째 댓글의 작성자에는 "변경 닉에임"이 적용..

 

이럴 수도 있나요?

혹시 캐시 문제인가? 해서 "캐시 파일 재생성", "하루 경과 후 확인"... 등등

여전히 그대로입니다.

 

댓글 정보에 들어가는 작성자가 xe_member의 기본 키이고...

닉네임이 변경되면 같이 바뀌어야 하는게 정상인데.

 

이건 정말 이상하네요~

 

아래 그림을 보면 동일인이 다른 게실물에 각각 남긴 댓글인데...

 

2019-03-31 21 02 10.png

 

지금 보아하니, 댓글을 남긴 시점의 닉네임이 댓글 정보에 남는거 같고,

이후 회원 정보에서 닉네임을 변경해도 기존 댓글에 딸린 작성자의 닉네임은 변하지 않는거 같습니다.

 

이건 데이터베이스 원론에서 이야기하는 Anomaly 현상이고, 3NF 정규형에도 안 맞는거 같는데...

헐~~ 저의 추측이 맞는 건가요? 아니면 제가 뭘 놓친게 있는거지?

 

 

 

 

  • profile

    댓글을 남긴 시점의 닉네임이 박제되는 것이 정상입니다.

     

    예를 들어 여러 사람이 여기에 댓글을 달면서 코딩펀님이 어쩌고~ 코딩펀님이 저쩌고~ 라며 갑론을박을 했는데 내일 코딩펀님이 닉네임을 바꿔버리신다면? 며칠 후 이 글을 검색해서 들어오는 사람은 대체 누구를 지칭하는 건지 전혀 알 수 없겠지요. 닉네임 변경시 그 닉네임을 언급하는 타인의 글이나 댓글 내용까지 싹 다 바꿔주지 않는 한...

     

    글/댓글 테이블의 닉네임 필드는 글쓴이의 현재 닉네임이 아니라 작성 시점의 닉네임을 의미한다고 생각하면 3NF에 위배되지 않습니다. 비회원 글쓰기를 허용하는 사이트에서는 member_srl 없이 닉네임만 들어갈 수도 있으니, member 테이블을 조인해서 글쓴이 정보를 불러올 수 있다는 보장도 없고요.

  • profile ?
    아.. 그런 측면이라면 오류가 아니네요. 댓글이 '갑론을박'의 장이 될 수 있다는 점은 생각하지 못한거 같습니다. 유익한 답변 감사합니다.
  • profile

    저는 현재 시점의 닉네임을 표시하는 것도 여러 혼선이 생기는 것 외 현재 시점의 닉네임을 매번 회원정보에서 조회하는 것은 자원 낭비라는 생각이 듭니다. 꼭 필요한 사이트는 스킨에서 해당 닉네임 부분을 저장된 문서가 아닌 회원db에서 매번 불러오게 고쳐야 한다 생각하구요.

    지금 처럼 문서출력에 필요한 부분을 문서저장시 함께 저장해 문서 조회 만으로 모든 정보를 출력하는게 리소스 사용에 효율적이라는 생각이 드네요.

     

    대신 절충안으로 닉네임 변경시 문서,댓글에 작성자 닉네임을 모두 바꿔주는 자료를 이용해 db를 수정해줍니다.

  • profile profile
    네, 데이터베이스를 최대한 정규화하는 것이 성능에 도움이 되지는 않지요. 상당수의 일반 사용자들은 열악한 웹호스팅 환경에서 XE를 사용하고 있으니, 아마 그 부분도 제로님이 최초 설계하실 때 고려하셨을 거예요. 작성 시점의 닉네임이 박제되는 효과는 덤이고요 ㅎㅎ
  • ?
    게시글/댓글 작성자가 사이트를 탈퇴해서 회원정보가 사라지더라도 작성자 닉네임이 남아있죠
  • profile

    4월 1일을 기념해 닉변했는데 박제되는 거군요

    1f631