PROGRAMMING WORKSHOP

.Net FrameWork,VB.Net | DataSet,DataTable

DataSet개체에 관계형 DataTable구성하기

아래 그림과 같이 DataSet 디자인 화일을 열고 앞페이지에서 Members테이블을 만든 것과
같은 요령으로 테이블을 하나 더 만들고 Activities라고 이름을 지어주었다
Members의 각 회원들이 모임에서 활동하는 작업이 많을 것이다
그러니 한명의 회원을 많은 활동기록을 갖고 있을 것이다
이것이 실제의 테이타의 형태인 것이다
회원의 ID값만 참조하면 한명의 회원과 관련된 기록은 별도의 테이블에
관리를 할수 있는 것이라는 것이 관계형테이블의 컨셉이다
테이블에는
하나의 활동의 키값인 ID휠드와
활동일자인 ActDate휠드와
활동내용인 ActName휠드를 간단하게 만들어 넣어보자
그리고 중요한 것은 하나의 활동내용이
어느 회원이 한 것인지 구분할수 있는 무언가 있어야 할것이다
이것을 Foreign Key(외부참조키)라고 하고, 이것이 연결고리가 되는 것
외부참조키(Foreign Key)가 Members테이블의 ID키와 연결되는 것
이것을 위한 휠드 MemberID휠드를 하나 만들고
휠드를 만들때 모든 개체가 속성이 있는 것이니, 관련 휠드의 속성메뉴로
속성창을 열고 데이타타입을 항상 유념하고
특히 외부참조키는 참조되는 키의 데이타타입이 같아야 하는 것을 잊지 마시고

이제 테이블이 완성된후, 여기에서 중요한 것이
두개의 테이블의 관계를 구축하는 것



Members테이블의 ID값과 Activities 테이블의 MemberID휠드와는
관계를 갖고 있다는 것을
DataSet개체에 알려 주어야 할것이다
이 알려주는 작업이 아래의 그림과 같이 새로만든 테이블의 메뉴 Relation(관계)을
실행하여 나타나는 대화상자에서 어떤 테이블의 어떤 휠드와 다른 테이블의
어떤 휠드와는 관계를 갖게 된다라고 표시해주는 것
그러면 DataSet에서 알았다는 의미에서 그림과 같이 연결선이 구축되는 것을
볼수 있다



이때 하나의 연결선의 하나의 꼭지는 Members테이블은 열쇠고리가 나타나고
새로만든 Activities 에는 무한대 표시가 나타난다
이것은 한명의 회원이 아주 한없이 많은 활동내용을 갖고 있다는 표현이다

Members테이블이 부모테이블이고
Activities테이블이 자식테이블인 셈이다
부모와 자식간의 관계를 구성한 것이다
이때 Members테이블의 ID와 Activities테이블의 MemberID는 데이타타입이 같아야 하고
자식테이블에서 부모ID를 MemberID가 갖고 있는 것이다
모든 DB테이블의 구성은 이런 관계를 유지하고, 이것을 그대로 메모리상에
구현하게 해주는 것이 DataSet이고 DataSet를 구성하고 있는 것이
DataTable인 것이다, 그러니 하나의 DataSet에는 여러개의 DataTable이
있게 되고, 물론 간단한것은 하나만 있어도 되고..

이렇게 위와 같이 구성한후 Data Source창을 열면
그림과 같이 DataSet구성창에서의 모양과 Windows 구성창에서 볼때와 아이콘모양이 다르다



Windows폼작업창에서
아래의 그림과 같이 Members테이블과 Activities테이블의 아이콘을 지정하고
Members테이블아이콘을 끌어다가 Windows폼에 놓고
다시 Activities테이블 아이콘을 끌어다가 Windows폼에 놓면



아래와 같이 부모자식간의 콘트롤이 자동으로 그려진다
적절히 크기등을 조정하면 된다



저장버튼의 속성에서 Enabled=True로 활성화시키고
몇개의 데이타를 입력해보면, 부모테이블(Members테이블의 이름과 생일)그리고
자식테이블의 정보를 입력하고 저장한후
다시 열어보면 정보가 살아 있음을 알수 있다



저장버튼에서 바탕화면에 XML화일을 만들고 저장을 하도록 하였고
화일이 열릴때 XML화일이 있으면 정보를 읽어들여 DataSet의 두개의 테이블에 채워주고
이 테이블은 폼의 콘트롤에 연결되어 있으나 XML, 폼, DataSet 3개가 협력하면서 정보관리
소루션을 유지하고 있는 것이다

간단한 작업이지만, 시스테믹하게 움직이는 정보관리의 하나의 좋은 모델이다
아래의 화일의 모듈의 설명을 보시면서
똑같이 만들어 보시면 되겠다..

***[LOG-IN]***