댁내 데이터베이스 설계는 안녕하신가요?
“지금 쓰는 프로그램이 있는데 정산금액이 안 맞아요.”
“해당 주문표에서는 제대로 나오는데 월말정산,연말정산만 하면 금액이 틀리게 나와요.”
“어 이 금액은 지난번에 삭제된 항목인데 합계에 적용돼서 나와요.”
개발문의 상담을 하다 보면 심심치 않게 듣는 이야기 중 하나입니다.
생각보다 많은 업체에서 이런 문제점을 이유로 기존 프로그램의 수정이 가능한지 문의합니다. 결론적으로는 매우 어렵거나 불가능합니다.
이유는 간단합니다. 단순하게 출력 오류가 아니라 금액의 합산이 잘못되었다는 것은 높은 확률로 데이터베이스 설계에 중대한 결함이 있을 수 있기 때문입니다.
데이터베이스의 설계는 건물로 따지면 뼈대와 같기 때문에 잘못된 구조를 수정한다는 것은 해당 구조를 수정하는 단계에서부터 모든 연관된 프로그램을 새로 만드는 것과 다름없습니다.
프로그램의 데이터베이스 설계는, 요구사항을 파악하고 화면설계를 마무리 한 시점에서부터 시작합니다.
데이터베이스 설계는 각 항목간의 연관성을 반드시 연결하여 실수로라도 프로그램에서 발생할 수 있는 오류를 원천적으로 차단해 주는 일을 하는 매우 중요한 작업입니다.
합산이 잘못되어 나온다는 얘기는 한곳에서만 존재하고 참조해야 하는 특정 값이 다른 곳에도 유령 값처럼 존재하거나, 또는 연관관계가 되어있지 않아 어떤 값을 넣어도 데이터베이스에서 해당 값이 오류인지, 정상적인 값인지를 인지하지 못한다는데 있습니다.
물론 다행히도 단순하게 스케줄링을 하는 데몬이 일시적으로 작동을 하지 않아, 속도를 위해 합산값을 입력해주는 테이블이 원하는 시간에 업데이트 되지 않아서 발생한 일일 수도 있습니다만, 그렇다 하더라도 그런 스케줄링이 제대로 처리되지 않는 걸 모니터링하지 못한 것은 문제가 있는 것이겠지요.
보통 이런 식의 설계는 어떻게 수정할 수 없는 경우가 대부분이므로 해당 프로그램은 갈수록 더 많은 오류를 일으킬 것이라는것이 관건입니다.
이런 경우 대부분 “혹시 납품받으신 문서 중에 데이터베이스 설계문서나, ERD(Entity-Relationship Diagram)가 있으신가요?”라고 물어보면 “데이터베이스 설계문서? ERD? 그게 뭔가요?”라는 대답을 주로 받습니다.
다른 모든 개발용 라이브러리를 저렴하게 이용한다 하더라도, 최소한 데이터베이스 설계만큼은 반드시 ERD를 그리면서 설계해야 합니다.
그래야 시각적으로 어떤 연결에서 어떤 문제가 발생할지, 또는 구조적으로 안전한지 근본적으로 차단할 수 있기 때문입니다.
이런 설계 오류에 대한 결과는 다양한 형태로 나타납니다. 단순히 출력단에서 글자가 틀렸네, 위치가 안 맞냐의 문제가 아닌 뭔가 굉장히 크리티컬한 오류 증상을 보여지게 됩니다. 문제는 이런 증상은 바로 나타나지 않고 대부분이 시스템에 어느 정도 데이터가 축적되고 일정 시간이 지난 후 나타난다는데 있습니다.
바로잡기엔 너무 늦었고, 이미 데이터도 많이 축적된 상태라 새로 만드는 것 말고는 해결 방법이 없을 때가 대부분이라는 것입니다.
데이터베이스 설계는 소프트웨어 시스템의 핵심입니다. 올바른 설계는 데이터 무결성을 보장하고, 성능을 최적화하며, 보안을 강화하는 데 필수적입니다.
잘못된 설계는 데이터 중복, 잘못된 정보 처리, 시스템 성능 저하 등 다양한 문제를 일으킬 수 있습니다.
이렇게 데이터베이스 설계는 시스템의 안정성과 효율성에 직접적인 영향을 미칩니다. 따라서 데이터 모델링, 정규화, 인덱싱 전략, 보안 정책 등을 신중하게 고려하여 설계하는 것이 중요합니다.
데이터베이스 설계는 단순히 데이터를 저장하는 구조를 넘어, 시스템의 전반적인 품질과 성능을 결정짓는 핵심 요소임을 명심해야 합니다.