C# DB 코딩 강좌 2008. 11. 14. 20:57

    DB 3를 보면서 DBase III와 DBF를 생각한 사람은 정말 이글을 안봐도 되지 않을까?

    자 네번째 글이다. 아무래도 촌장의 눈치가 보인다.

    강좌란에 낙서로 도배를 해야되는 입장에서 이번글에는 조금 딱딱하게라도 뭔가 있는척 해보도록 하자.

    뭐 원래는 여전히 우리 은영이의 전번에 대한 이야기를 적어야 되지만 촌장이 여간 만만치 않은 인물이므로 방향을 틀어서…

    업무분석단계에서 의사 선생이 요구한것은

    마치 중국집의 "배달왕" 같은 프로그램 처럼 전화가 걸려왔을때 그사람의 신상정보가 떡 하니 뜨는것을 요구했다.(아마도 저 배달왕이란걸 이해 못할건데 중국집을 연상하면 된다. 요즘 중국집에 전화를 걸어서 짜장 하나요 그럼 네 하고 끊지요.. 저의 집주소를 이미 알고 있는거죠)

    즉 전화기의 CID를 받아서 그것을 DB에서 쿼리한 다음에 그 정보를 화면에 보여주는것이다.

    그때에 나타나야 하는정보는 피부관리 횟수와 각종 수술정보 그리고 방문시 마다 나아진 모습의 사진을 볼수 있어야 된다는게 요구사항이다.

    핵심은 결국 CID를 받는것이고 그것은 장비가 해줄것이니 지금 초점은 DB의 설계를 어떻게 할것인가이다.

    일단은 기초요구사항중 하나인 전화기록이 모두 남게 해달라는것(즉 테이블이 하나 더 필요할것이다.)

    그 전화들마다의 메모를 적을수 있도록 해달라는것과 의사에게 전달할수 있도록 체크박스를 해서

    다음 진료일에 그 메모가 전달되도록 해달라는것이였다.

    고객의 전화번호가 여러 개 일경우라도 모두 인식하게 해달라는것(이건 정말 곤란하다.)

    게다가 마찬가지로 고객의 주소지가 변경이 되어도 모든 주소지의 내역을 저장해 달라는것이다.

    예를 들어 직장, 집, 전직장, 등등…

    이런 황당한 요구사항들을 다 들어주게 된다면 프로그램은 여간 피곤해지는게 아니다.

    일단은 딱 짤라게 겠지만 지금은? 그렇다 우리 은영이를 위해서 못해주는게 뭐가 있겠는가?

    (그러다가는 프로젝트 말아먹는다.)

    하지만 알게 뭔가.. 지금은 연습하는거 아니겠는가?

    우편번호 테이블도 귀차니즘으로 생략을 하고 위와같은 대충 테이블을 생성하자.

    헉.. 이말을 적음과 동시에 ER-win을 설치해야 한다. 베타버전은 알아서 받기 바라며

    설치 ㅠ.ㅠ

    하여간.. 지금 사용할것은 7.X 버전을 이용해 보도록 하자.

    ( 4.X버전은  ms-sql의 2000 그리고 oracle의 9.0까지 접속을 처리해주고 상위버전으로 접속을 해보질 않았다.)

    ( 그 이후 7.X대는 ms-sql의 2005 oracle의 10G/11G까지 처리가 된다. )

    ( 이 글에서는 ms-sql 2005와 oracle 9i 를 사용하는것을 기준으로 하자. )

    방금 2강에 낙서를 적었음에도.. 사실 내가 뭘 적었는지 기억이 나지 않는다.

    clip_image001[4]

    하여간 이때까지 적은걸로 대충 만들어 보면 이와 유사한 테이블이 될듯 싶다.

    너무 복잡하다. ㅠ.ㅠ 내가 하기에는 조금 힘들듯 싶긴하지만 계속 해기록 하자..

    (물론 위의 테이블은 딱 보기만 해도 정규화 1NF 의 위반을 가지고 있다. 이런걸 지금 설명하기에는 여러모로 버거우니

    이야기가 진행되어가면서 여유가 될때 이야기를 해보자.. C# 강좌에 DB이야기 까지 영역이 늘어나서 지금 적어야 되는 이야기가 너무 많다. ㅠ.ㅠ)

    일단은 설계도란건 여러가지 상황을 고려해야지만 한다. 예를 들어서 전화번호와 전화내역은 그림에서 보듯이 널이 허용되는 연결을 가진다.

    이것은 즉 걸려온전화번호가 이미 저장되어 있는 전화번호가 아닌것도 전화내역을 저장하기 위해서 이다.

    항상 새로운 전화번호가 대부분일것이며(?) 그러한 신규환자가 있어야지만 좋은것이기 때문일것이다.

    그리고 그에 따른 메모를 잘 해두고 다음에 이런 신규환자(?) 상담환자가 다시 전화를 했을때 그 상담내역을 알수 있다면

    업체의 경우는 여러모로 좋을것이다.

    자.. 그러니까.. 문제의 핵심은 create를 대신 만들어 주고 이것을 따로 파일로 관리해주고 그림으로 쉽게 알아 볼수도 있으니 그래서 이런 툴을 사용하게 되는것이다.

    하여간.. 우편번호 테이블을 만들어야 되고 연결도 해야되고.. 각 필드마다의 사연(?)을 이야기 하면서 잘 지워가기도 하고

    또 새로운걸 넣기도 해야겠지만.. 지금은 그냥 두자.

    나중에.. 수정하도록 하자.. 여하튼 지금은 적당히 하고 하여간.. 저 테이블 중에서도..

    정말.. 생각없이 만든.. 첫번째것만..

    이야기를 시작해 보도록 하자.

    clip_image002[5]

    방금 몇가지 수정을 처리했다.

    DB에 대한 여러가지 필드에 대한 이야기는 아마도 C# 게시판에 적을글이 아니니

    예제를 위한 형태로 코딩을 하면서 계속 필드를 넣거나 빼도록 하자.

    clip_image003[4]

    자 물리테이블을 대충 설계를 하고.. 물리테이블을 위해서는 우리의 경우 오라클과 ms-sql을 둘다 해야 하므로

    사실상 ER-win 파일을 두개를 만들어야 한다.

    위의 경우는 ms-sql의 경우가 될것이다.

    원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1580&page=2>

'C# DB 코딩 강좌' 카테고리의 다른 글

C#을 이용한 DB코딩 10  (0) 2008.11.14
C#을 이용한 DB코딩 9(인터페이스)  (0) 2008.11.14
C#을 이용한 DB코딩 8  (0) 2008.11.14
C#을 이용한 DB코딩 7  (0) 2008.11.14
C#을 이용한 DB코딩 6(TcpChannel)  (1) 2008.11.14
C#을 이용한 DB코딩 5  (0) 2008.11.14
C#을 이용한 DB코딩 4(Virtual PC)  (0) 2008.11.14
C#을 이용한 DB코딩 2  (0) 2008.11.14
C#을 이용한 DB코딩 1  (0) 2008.11.14
DB 이야기를 시작하면서  (0) 2008.11.14
posted by 삶의여유로움
: