database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4355 게시물 읽기
No. 4355
테이블설계, C#에서 연동
작성자
조용필
작성일
2008-07-27 01:02ⓒ
2008-07-27 01:17ⓜ
조회수
5,763

안녕하세요. 2일이 지나도 풀리지 않는 문제를 이곳에 남깁니다. ㅡ.ㅠ

제가 학원을 다니는데 이번에 시작된 프로젝트의 팀장입니다.

SQL 입문서는 몇번이나 훑어봐도 어렵네요.


저희 팀이 하려는 것은 윈폼을 이용한 사내 게시판 프로그램입니다. 허나, 정말 산넘어 산이네요 ㅡ.ㅠ


그럼 조심스럽게 첫번째 질문입니다. 간단하게 문제되는 부분은,

게시판과 메뉴, 분류와의 설계입니다.


게시판은 여러 메뉴(자유게시판, 질문답변게시판, 강좌, 다운로드등)을 가지며, 메뉴는 여러 분류(강좌같은것은 예를들어 컴퓨터일반, 영어, 컴퓨터, 일본어)를 가지고, 이 분류는 또다시 세부 분류(영어면 문법, 단어, 숙어 등등)를 구현해내려고 합니다만, 제 머리의 한계입니다.

수많은 책을 본 결과, 1-n관계에서는 n에 1의 pk를 넣으면 해결된다..고 해서 아래와 같이 구성했습니다.


세부분류

subcateid

subcate


분류

cateid

subcateid references 세부분류테이블

cate



메뉴

menuid

cateid references 분류테이블

menus


게시판

boardid

menuid references 메뉴테이블



요렇게 하니까 뭔가 깔끔해진 것 같은데 문제가 생겨버렸습니다. '다운로드 게시판'에 '테마'메뉴에 '배경화면'분류에 '자연'을 검색해서 윈도우폼의 리스트뷰에 뿌릴려고 하는데 도저히 어떻게 명령을 내려야할지 답이 안나옵니다. ㅡ.ㅠ

테이블 설계가 잘못된 걸까요? 아니면 select문으로 구현할 수 있는 것일까요?


또다른 문제는,

회원테이블, 학과 테이블이 있습니다.

여기서 회원 테이블은 학과테이블의 ID를 참조합니다. (여기까진 맞겠죠 ㅡ.ㅠ)

그런데 제가 새로운 회원을 윈도우 폼을 이용해서 등록하려 합니다.

콤보박스(리스트방식)에 학과를 촤르륵 넣는 것은 성공했습니다.

그런데 그 다음에 문제가 회원가입 버튼을 누를 때 회원이 선택한 '학과'의 '학과번호'를 찾아서 INSERT INTO 할때 회원테이블의 '학과번호'에 맞는 학과번호를 저장해야 하는데, 이게 또 참 어렵습니다. ㅡ.ㅠ


마지막 문제는

게시판 테이블과 첨부파일 테이블이 있습니다.

create table board

(

boardid int primary key,

boardtitle nvarchar(50),

.

.

.


)


create table 첨부파일

(

첨부id int primary key,

boardid int references board(boardid),

첨부파일 binary,

.

.


)


윈폼으로 게시판 만들어서 저장할 때 쓰는 insert 문은 어떻게? (2개의 테이블의 새로운 데이터를 한번에 입력해야 하는 문제입니다.)

이 글에 대한 댓글이 총 2건 있습니다.

흠 뭐가 문제인제 좀더 정확하게 적어주시기 바랍니다.

그리고 실제 사용되는 쿼리도 같이 올려주시기 바랍니다.

김병석(byung82)님이 2008-07-27 17:18에 작성한 댓글입니다.

일단 관계를 거꾸로 맺으셨습니다.

분류 : 세부분류 = 1: n 이라는 관계를 디자인할 때는 아래처럼 관계가 되어야 합니다.
분류 = {cate_id, cate_nm}
세부분류 = {cate_id, sub_cate_id, sub_cate_nm}

하지만 내용으로 미루어 이는 분류의 코드성 데이터끼리의 관계이지 실제 게시판에 남긴글을 어떻게 관리할 지는 없군요...여기도 남긴글, 답글, 추천글 등을 어떻게 관리할 것이냐에 따라 모델링 결과가 매우 다양해 집니다.

또한 코드성분류를 관리하는 방법에도 질문의 방법처럼 모든 코드들을 전부 각각의 테이블로 나누는 방법만 있는 것이 아니고,
대분류, 중분류, 소분류등 한 테이블에 관계를 컬럼으로 쭉 풀어놓은 것처럼 관리하는 방법도 있겠고,
code, 부모코드(또는 자식코드) 처럼 한 테이블에 상하의 관계를 데이터 row관리로 설정하는 방법도 있습니다.
더 나아가 이들 엔터티들에서는 코드들만 관리하고 그에 대한 명칭 또는 대표속성등은 통합코드테이블을 따로 두어 관리하는 방법도 많이 사용되고 있습니다.

설계를 책임감있게 하시려면 모든면에 조금 더 신경을 쓰시어 실제 업무모델에 가장 적합한 DB모델을 뽑아내는것이 바람직합니다.
이것은 몇마디 말로 간단히 되는 것이 아니기에 이정도만 적습니다.
업무에 대한 깊은 이해는 둘째치고라도 최소한 기술적인 부분 - 모델링 기법 기초와 SQL의 구현방법 기초 - 정도는 숙지하시고 모델링을 하시기를 권합니다.

건승하시길...수고하세요~~

성시현(finecomp)님이 2008-07-28 10:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4359이거 바이러스에 감염된건가요? [2]
미인아기
2008-07-28
5092
4357MS-SQL2005 사용하는 두대의 DB서버을 연동 할수있는방법 [1]
변송학
2008-07-28
5015
4356mssql ==> oracle 10g Linkedserver 구성 오류
창현아빠
2008-07-28
4827
4355테이블설계, C#에서 연동 [2]
조용필
2008-07-27
5763
4354title? header? 툴에서 조회 하면 나오는 위에 컬럼명을 포함한 조회 [1]
666
2008-07-25
5295
4353프로시저에서 변수를 필드명으로 사용할 수 있나요? [1]
엄정훈
2008-07-25
6279
4352프로시저에서 매개변수를 배열로 사용하는 방법 [3]
유은정
2008-07-24
5964
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다