자 일단은 테스트를 위해서는 우리는 서버가 필요하다.
일단 ms-sql은 xp에 설치가 되지 않기 때문이고 또한 자신이 사용하고 있는곳에 오라클이든지 ms-sql이던지
설치를 하게 되면 상당히 PC가 느려지기 때문이다.
그래서 해답(?) 스스로 찾아야겠지만.. 나의 경우는 버추얼 PC를 사용해서 주로 돌리게 된다.
Virtual PC 2007는 무료로 MS에서 제공하니 MS에서 받도록 하자.
DB의 코딩에 있어서..
버추얼 PC 는 거의 필수에 속한다.
예전에 머리속에 아무것도 없을때는 그냥 컴퓨터에 오라클도 설치하고 ms-sql 거기다 my-sql 까지 설치를 했었다.
갈수록 컴퓨터는 느려지고 뭐가 그리도 충돌도 심한것이 많은지
나중에는 서비스에 중지를 한다거나
잘 제거도 안되는 오라클 덕분에 레지스트리를 뒤지다 실수까지 해서 OS를 다시깐 에피소드도 있다.
게다가 ms-sql은 서버에만 설치가 된다.
그럼 해답은 무엇이겠는가?
바로 버추얼 PC가 그 해답이다.
이 글을 적는 입장에서
하나는 2003을 설치를 하고 다른 버추얼피시에는 XP를 설치해 두고
2003에는 ms-sql을.. Xp에는 오라클을 설치해 두었다.
이것은 개인적 사정이고 하나의 버추얼 피시에 두개의 sql을 다 설치해도 좋다.
설치를 한뒤에
각각의 버추얼 형태로 ms-sql과 오라클을 설치해서 그것을 start하게 되면 하나의 sql서버가 돌아가게 되는것이다.
물론 각자의 취향이니 이건 단지 DB 코딩을 위한 하나의 준비라고 생각하자.
알아서 SQL 서버를 하나씩 준비해 두자.
자 여하튼.. 서버에 접근해서
우리의 ERD를 위한 DB에 계정부터 만들어야 겠다.
에 가서..
을 선택하여.. 로그인을 만들자.
그런다음 ER-win에서 DB접속을 해서 우리가 만든 테이블을 넘기면 되는것이다.
-------------------------------------------------------------
중간 단계를 많이 생략하면서 적는데 실제적으로는 참 귀찮은 작업들이 많다.
오라클도 알아서 준비해 놓자.
만약 이 중간과정에 대해서 더 관심이 있다면 네이버나 구글에 ER-WIN이라고 입력해서 알아보길 권한다.
CREATE TABLE Patient
(
PatID nvarchar(8) NOT NULL ,
PatNM nvarchar(10) NULL ,
PatRegDate datetime NULL ,
PatNAN char(13) NOT NULL ,
PatSex numeric(1) NULL ,
PatBirth nvarchar(8) NULL ,
PatMemo nvarchar(4000) NULL ,
PatFaceImage image NULL ,
PatRFID nvarchar(50) NULL
)
Execution Successful
ALTER TABLE Patient
ADD CONSTRAINT XPK환자 PRIMARY KEY CLUSTERED (PatID ASC)
Execution Successful
자 이렇게 자동으로 테이블을 만들어서 실행까지 해줄것이다.
또는 직접 디비에 접근을 하지 않더라도 위의 스크립만 만들어서 날려줘도 좋다.
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1581&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코딩 3 (0) | 2008.11.14 |
C#을 이용한 DB코딩 2 (0) | 2008.11.14 |
C#을 이용한 DB코딩 1 (0) | 2008.11.14 |
DB 이야기를 시작하면서 (0) | 2008.11.14 |
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강에 낙서를 적었음에도.. 사실 내가 뭘 적었는지 기억이 나지 않는다.
하여간 이때까지 적은걸로 대충 만들어 보면 이와 유사한 테이블이 될듯 싶다.
너무 복잡하다. ㅠ.ㅠ 내가 하기에는 조금 힘들듯 싶긴하지만 계속 해기록 하자..
(물론 위의 테이블은 딱 보기만 해도 정규화 1NF 의 위반을 가지고 있다. 이런걸 지금 설명하기에는 여러모로 버거우니
이야기가 진행되어가면서 여유가 될때 이야기를 해보자.. C# 강좌에 DB이야기 까지 영역이 늘어나서 지금 적어야 되는 이야기가 너무 많다. ㅠ.ㅠ)
일단은 설계도란건 여러가지 상황을 고려해야지만 한다. 예를 들어서 전화번호와 전화내역은 그림에서 보듯이 널이 허용되는 연결을 가진다.
이것은 즉 걸려온전화번호가 이미 저장되어 있는 전화번호가 아닌것도 전화내역을 저장하기 위해서 이다.
항상 새로운 전화번호가 대부분일것이며(?) 그러한 신규환자가 있어야지만 좋은것이기 때문일것이다.
그리고 그에 따른 메모를 잘 해두고 다음에 이런 신규환자(?) 상담환자가 다시 전화를 했을때 그 상담내역을 알수 있다면
업체의 경우는 여러모로 좋을것이다.
자.. 그러니까.. 문제의 핵심은 create를 대신 만들어 주고 이것을 따로 파일로 관리해주고 그림으로 쉽게 알아 볼수도 있으니 그래서 이런 툴을 사용하게 되는것이다.
하여간.. 우편번호 테이블을 만들어야 되고 연결도 해야되고.. 각 필드마다의 사연(?)을 이야기 하면서 잘 지워가기도 하고
또 새로운걸 넣기도 해야겠지만.. 지금은 그냥 두자.
나중에.. 수정하도록 하자.. 여하튼 지금은 적당히 하고 하여간.. 저 테이블 중에서도..
정말.. 생각없이 만든.. 첫번째것만..
이야기를 시작해 보도록 하자.
방금 몇가지 수정을 처리했다.
DB에 대한 여러가지 필드에 대한 이야기는 아마도 C# 게시판에 적을글이 아니니
예제를 위한 형태로 코딩을 하면서 계속 필드를 넣거나 빼도록 하자.
자 물리테이블을 대충 설계를 하고.. 물리테이블을 위해서는 우리의 경우 오라클과 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 |
DB2라고 적힌글을 보면서 IBM을 생각했다면 당신은 이글을 안 봐도 좋지 않을까?
이제 목차를 적어보자.
과연 뭘 적을지 모르겠지만 긴 글을 적을때 가장 중요한것은 목차의 선정(?)일것이다.
일단은 내가 할것은
시리얼로 전화번호 CID 를 받을것이다.
또한 시리얼로 RFID 의 UID를 받아서 처리해야 할것이며
전체 폼의 DB셋팅을 처리해 주는 루틴을 위해서 foreach를 돌릴거고
MS-sql과 Oracle을 처리할것이고
디비에 이미지를 넣고 빼고를 해야되어서 CLOB / BLOB그리고 ms-sql의 image를 이용하자.
SP 형태와 그냥 SQL형태 둘다 처리하는 루틴을 짜고
Dataset에 대한 이야기와 이것을 다루는 LINQ을 살짝 찍고
전체 프로젝트에 대한 ER-win으로 데이터 설계를 해야하며
부수적인 컬랙션이라던지 XML이라던지 등등을 이야기들을 하면서
시간이 된다면 아래의 적은 Spread와 크리스털의 이야기의 후반부도 완성해 보자.
그리고 닷넷의 기초틀을 이루고 있고 현재 적어야 되는 이야기에서 빠질수 없는 패턴중에 생성자 패턴에 대한 이야기들을 잠시 풀어야 될듯 싶다.
Sql서버가 있어야 되니 이것을 구축하는걸 위해서 어쩔수 없고 버추얼 PC이야기도 잠시 할수도 있고 말이다.
너무 많나..
-_-;;
그렇다. 결국 난 '구라'로 시작하여 '구라'로 끝나는 강좌를 적을것이다.
이글의 제목을 봐라 '낙서' <--- 낙서라함은 문학계에서 수필의 최상위권에 있는 형식으로서 있거나 말거나 또는 믿거나 말거나의 문학이라고 내가 정의한다.
그러니 당신이 낚였다고 생각을 하거나 말거나 난 크게 개의치 않는다.
코드한줄없이 벌써..2강이지 않는가 우하하~~
조회수를 보면 역시 1강의 최고의 조회수를 자랑하며 결국 갈수록 떨어지는 조회수를 보게 될것이다.
물론 촌장이 이글을 자게로 옮길까 겁나긴 하다.
자… 무엇부터 시작을 해야 하는가?
What to do or Not to do that is question
가상의 꿈을 꾸도록 하자.
어느날 성형외과에서 자신들의 환자의 이미지들을 잘 유지관리하도록 하기 위해서 나에게 프로그램을 의뢰하였다.
이제 그 성형외과의 관리 프로그램을 하나 작성해 보도록 하자.
자 사람이 왔다. 의사가 어쩌고 저쩌고.. 간호사가 어쩌고 저쩌고를 하는데 어찌 그리 이쁘던지
하나도 기억이 나지 않는다.
늘씬하게 빠진 다리만 보다가 당신은 정신을 놓았다.. ^^;;; 헬렐레….
된장.. 테이블을 만들어야 하는데
오로지 그녀의 이름만 생각이 나고 말이다. 하지만 성과는 있었다는거 전번을 따고야 말았다.
Create table xxxx
이름
전화번호
그녀의 키
그녀의 몸무게
그녀의 집주소
어라 sql이 에러를.. 이게 어떻게 적더라.. Sql책을 뒤적 뒤적
젠장.. 하나도 기억이 나지 않는다.
이런 여자에 정신이 팔리니 creat쿼리 하나 기억이 나지 않는다니 말이다.
에이 정신도 산만해서 그녀에게 전화를 걸었다.
뚜~~~
여보세요.. 저 최은영씨 좀 부탁합니다.
네 전데요.
네.. 어제 만나뵈었던 프로그래머입니다.
몇가지 궁금한 사항이 있어서요.
네 물어보세요.
혹시 남자친구는 있으세요? 라고 묻고 싶었다. ㅠ.ㅠ
"남자"…..
까지만 말을 하고 그만 아무런 생각이 들지 않는것이다.
"남자들도 성형하러 오시나요?"
"네 당연하죠"
그녀를 자주 봐야겠는데 이런 자주 들러야 겠다.
"혹시.. 내일…"
"네..?"
"내일도 출근하세요?"
"네 그렇죠. 그게 프로그램과 무슨상관이 있죠?"
"아… 네.. 그게 그러니까 출퇴근하는것을 기록해야 하거든요. 의사선생님께서 말씀을 하셔서"
"아.. 네.."
"네.. 그럼 궁금하게 있음 다시 연락드리겠습니다."
아 참 이런 바보같은 질문을 떤지고야 말았다.
왜 난 sql도 기억이 나지 않는가?
그녀의 생일도 묻고 싶었는데…
아 어떻게 하면 그녀의 사진이라도 하나 껀질수 있을까?
머리를 굴려봐도 답이없다. …..
이런 … 차분하게 다시금 테이블을 작성해 보자.
일단은
이름을 알아야 하고
주민등록번호.. 그렇다. 이걸 알면 생일신공은 자동빵이 아닐까?
이런 음력생일일수도 있는데
이여자가 여길 언제부터 일했을까?
증명사진을 DB에 넣어야 된다고 뻥치고 사진을 좀 얻어야 하나
출퇴근을 알아야 하니 RFID도 필드에 넣어야 될듯 싶다.
남자도 오긴 한다고 했으니 남녀 구분필드도 만들까? 아님 주민등록번호로 그냥 할까?
자 이런 생각을 하면서 다시금 create를 적으려 했으나 눈물이 앞을 가린다.
그래서 말이다. 정말 그래서 ER-win이란게 만들어 졌다.
어떻게 하면 여자를 잘 꼬실수 있는가 하는 고민을 하다가 누가 이런 프로그램을 만든것이다.
자 우리는 여자를 꼬시기 위해서 ER-win이란걸 구해서 사용해 보자.
왜냐? 내가 그래도 뭔가 하는듯 보여줘야 할거 아닌가? 가끔 건축하는사람들이 AutoCad를 사용해서
설계도를 가지고 와서 내가 알지도 못하는 이야기를 할때마다 가끔 뭔지는 몰라도 뭘 하는가 싶네 하지 않은가? 그렇다. 우리도 그런 설계도 비스무리 한걸 만들어서 이 여자 앞에 떡 하니 깔아놓고 뻔뻔하게 이제 사소한걸 물어봐야되지 않겠는가 ? 어디사세요?
"왜 그런걸 물어보세요?" 라면.. 여기 있잖아요.. 여기에 다 넣어야 되어서 그렇다고
얼른 '구라"를 치는거다.
물론 그래도 믿지 않는다면.. 주소란에 최대치의 글자를 얼만큼 넣어야 되는건지 알아야되어서 그렇다고 얼른 모르는 소리를 하면서 varchar이 어쩌고 상관도 없는 Blob이 어쩌고를 떠드는것이다.
알게 뭐냐.. Binary Large of block인지 라고 전산쟁이가 보면.. 이녀석 사기치네 Large object를 가지고 사기도 좀 잘 쳐라 싶기도 하지만..
물론 심각한 표정으로 정말 그렇다는듯이 말이다.
아 저기서 누가 ER-win이 여자를 꼬시는데 전혀 도움이 안된다고 의의를 제기 하는데 일단 그 증거를 보여주겠다.
최대한 복잡하게 그려가는거다.
좀 있어보이게 그리고 나서 하나씩 여기 빈곳을 다 채워야 된다면서 사방팔방 물어보는거다.
아 저기 뒤쪽에 왠 뜸끔없이 이런 그림이냐고 그러는 사람이 있는데
만약 이런거라도 안 올리면 c#관리자가 이글을 자유게시판으로 옮겨 버리는수가 있기 때문이다.
눈치것 살아야지 말이다.
하여간 위의 그림은 c# 마을의 관리자를 위한 눈속임(?)이고.. 이제 우리는 다시 본업(?)의 자세로 돌아오기로 하자.
하여간 문제의 핵심은 내가 create구문이 생각이 안난다는거였고
두번째로는 좀 있어보이게 해야된다는거와
세번째는 적지는 않았지만.. Create를 계속 위의 테이블처럼 어트리뷰트가 많은걸 적게되면 나중에 이게 뭐가 뭔지 모르게 된다는게 핵심이다.
그래서 그려야 하는데
그리는 툴로 대표적인게 ER-win이란것과
국내에서 만든걸로는 이화식이란 분의 회사의.. (엔코아의 DA#.) 나온..툴이 있다.
그외 기타등등은.. 댓글다시는분이 상세히 적어줄것이다.
뭐 백수인 난 잘 모르는거고 현업에 계시는분이 잘 알고 있으니 모르면 네이버나 구글신에게 물어보길 바란다.
참 여자 하나 꼬시는데 험난한 일정이다.
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1579&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코딩 3 (0) | 2008.11.14 |
C#을 이용한 DB코딩 1 (0) | 2008.11.14 |
DB 이야기를 시작하면서 (0) | 2008.11.14 |