Sunmoon_BIT

SunmoonBIT MINI PROJECT BITPORTFOLIO

와앙노 2010. 4. 28. 14:37
           


BIT PORTFOLIO DATABASE

SunmoonBIT 19th 황성노

 

 

 

 

BITPORTFOLIO의 데이터베이스 구성도이다.

기본적으로 회원정보를 저장하는 테이블이 존재하고 ID와 관계가 맺어진 성적정보테이블,로그인STATE테이블,이미지파일을 저장하는 테이블, 그리고 사용자가 만든 포트폴리오를 XML형태로 파싱하여 저장하는 XML파일 저장테이블이 존재한다.

회원정보 테이블에는 ID,PW,NAME,Email,생년월일,휴대폰,주소,학과,전공이 저장되며 Null값은 허용되지 않는다.

성적정보에는 소유자를 확인하기 위한 ID,SUBJECT,CREDITS,RESULT가 저장되고 로그인STATE에는 ID와 현재상태를 나타내는 STATE가 저장된다. 기본적으로 가입시 0으로 설정되어 있고 로그인시 1로 변경되며 로그아웃시 다시 0으로 변경되어 현재 접속중인 사용자를 알 수 있다.

이미지와 XML파일 저장테이블에는 소유자를 확인하기 위한 ID,FILENAME,DATA,SIZE가 들어가며 사진파일이나 XML파일을 2진데이터로 변환하여 byte배열에 저장하여 데이터베이스에 저장하였다.

 

 

 

사용자와 서버간의 사용하는 서비스를 나타내는 계층화 그림이다.

기본적으로 어셈블리에서 직접적으로 데이터베이스에 접근하며 이 어셈블리는 윈서비스로 제공된다.

윈서비스에서는 리모팅으로 어셈블리에 접근할 수 있도록 하며 웹서비스는 리모팅을 사용하여 윈서비스에 연결하여 어셈블리를 통해 데이터베이스에 데이터를 저장하고 읽어온다.

하지만 DownLoadImage DownLoadFile은 내부적으로 인자를 ArrayList로 사용하는 부분이 있는데 웹 서비스를 사용하여 메소드를 사용하려고 하면 ArrayList인 인자가 Object로 변하게 되서 사용이 불가능했다.

그래서 두 서비스만 예외적으로 클라이언트에서 직접 리모팅을 사용하여 윈서비스에 연결한다.

XML파일나 이미지를 데이터베이스에 저장할 때는 파일을 경로를 통하여 해당 파일을 이진데이터 형식으로 변환하여 바이트배열에 저장하여 데이터베이스에 저장하였다.

반대로 다운로드시에는 이진 데이터배열에 저장된 정보를 받아와서 파일스트림을 사용하여 새로운 파일을 생성하였다.

 

이 프로그램에서는 27개의 저장 프로시저를 사용하여 클라이언트와 데이터베이스 사이에 데이터를 저장하고 꺼내오고 있다. 프로시저의 내용을 통하여 각자의 역할을 알아보겠다

 

프로시저 이름

ChangeINFO

프로시저 내용

ALTER PROCEDURE dbo.ChangeINFO

        (

        @ID varchar(20),

        @PW varchar(20),

        @NAME varchar(20),

        @EMAIL varchar(20),

        @BIRTH varchar(10),

        @PHONE varchar(20),

        @ADDR varchar(50),

        @DEPARTMENT varchar(20),

        @MAJOR varchar(20),

        @CHECK tinyint OUTPUT

        )      

AS

        EXEC ExistID @ID,@CHECK OUTPUT

        if(@CHECK != 0)

        BEGIN

        EXEC UpdateInfo @ID,@PW,@NAME,@EMAIL,@BIRTH,@PHONE,@ADDR,@DEPARTMENT,@MAJOR

        END

        RETURN

프로시저 설명

회원정보에 해당하는 값을 입력받고 ID를 데이터베이스의 데이터와 비교해보고 일치하는 값이 존재하면 해당 정보를 변경

 

프로시저 이름

DeleteMember

프로시저 내용

ALTER PROCEDURE dbo.DeleteMember

        (

        @ID varchar(20)

        )      

AS

        DELETE FROM LoginState WHERE ID=@ID

        DELETE FROM ImageTable WHERE ID=@ID

        DELETE FROM MemberRecord WHERE ID=@ID

        DELETE FROM XmlTable WHERE ID=@ID

        DELETE FROM Member WHERE ID=@ID

        RETURN

프로시저 설명

ID를 입력받고 관계를 맺고있는 테이블들의 해당 아이디와 관계되는 값들을 지우고 마지막으로 멤버테이들의 해당 아이디와 관련된 정보를 삭제

 

프로시저 이름

DeleteRecord

프로시저 내용

ALTER PROCEDURE dbo.DeleteRecord

        (

        @ID varchar(50),

        @SUBJECT varchar(50)

        )

AS

        DELETE FROM MemberRecord WHERE ID=@ID AND SUBJECT=@SUBJECT

        RETURN

 

프로시저 설명

ID와 과목명을 입력받아서 성적저장 테이블에서 두개의 값과 일치하는 데이터를 삭제

 

 

프로시저 이름

DeleteRecordREQ

프로시저 내용

ALTER PROCEDURE dbo.DeleteRecordREQ

        (

        @ID varchar(50),

        @SUBJECT varchar(50),

        @CHECK tinyint OUTPUT 

        )

AS

        SELECT @CHECK=COUNT(*) FROM MemberRecord WHERE ID=@ID AND SUBJECT=@SUBJECT

        IF(@CHECK != 0 )

        BEGIN

        EXEC DeleteRecord @ID,@SUBJECT

        END

        RETURN

프로시저 설명

삭제요청하는 프로시저로 ID와 과목명을 입력받고 해당데이터와 일치하는 데이터가 있을때만 삭제 프로시저를 실행한다

 

프로시저 이름

DownLoadFile

프로시저 내용

ALTER PROCEDURE dbo.DownLoadFile

        (

        @FILENAME varchar(50)

        )

AS

        SELECT DATAFILE,ID,FILENAME FROM XmlTable WHERE FILENAME=@FILENAME

        RETURN

 

프로시저 설명

파일이름을 입력받아 일치하는 데이터의 파일,소유자ID,파일이름을 보여준다

 

프로시저 이름

DownLoadImage

프로시저 내용

ALTER PROCEDURE dbo.DownLoadImage

        (

        @IMAGENAME varchar(50)

        )

AS

        SELECT IMAGEFILE,ID,IMAGENAME FROM ImageTable WHERE IMAGENAME=@IMAGENAME

        RETURN

프로시저 설명

이미지이름을 입력받아 일치하는 이미지의 이미지파일,소유자ID,이미지이름을 보여준다

 

프로시저 이름

Dropout

프로시저 내용

ALTER PROCEDURE dbo.Dropout

        (

        @ID varchar(20),

        @CHECK tinyint OUTPUT

        )

AS

        EXEC ExistID @ID,@CHECK OUTPUT

        IF(@CHECK = 1)

        BEGIN

               EXEC DeleteMember @ID

        END

        RETURN

 

프로시저 설명

회원탈퇴요청 프로시저로써 ID를 입력받아 해당아이디가 존재할때만 삭제프로시저를 실행

프로시저 이름

ExistFileName

프로시저 내용

ALTER PROCEDURE dbo.ExistFileName

        (

        @ID varchar(50),

        @FILENAME varchar(50),

        @DATAFILE image,

        @FILESIZE int,

        @CHECK tinyint OUTPUT

        )

AS      SELECT @CHECK=COUNT(*) FROM XmlTable WHERE FILENAME=@FILENAME

        IF(@CHECK =0)

        BEGIN

        EXEC UpLoadFile @ID,@FILENAME,@DATAFILE,@FILESIZE

        END

        RETURN

프로시저 설명

파일저장정보를 입력받아 파일이름이 데이터베이스에 저장된 데이터와 일치하는 값이 없을때만 저장 프로시저를 실행한다

 

프로시저 이름

ExistID

프로시저 내용

ALTER PROCEDURE dbo.ExistID

        (

        @ID varchar(50),

        @CHECK tinyint OUTPUT

        )

AS      select @CHECK =count(*) from Member where ID=@ID

        RETURN

프로시저 설명

ID를 입력받아 해당 아이디가 데이터베이스에 몇 개 존재하는지 보여준다

 

프로시저 이름

ExistMember

프로시저 내용

ALTER PROCEDURE dbo.ExistMember

        (

        @ID varchar(20),

        @PW varchar(20),

        @CHECK tinyint OUTPUT

        )

AS      SELECT @CHECK = COUNT(*) FROM Member WHERE ID=@ID AND PW=@PW

        RETURN

프로시저 설명

IDPW를 입력받아 데이터베이스에 IDPW둘다 일치하는 정보가 몇 개 있는지 보여준다

 

프로시저 이름

ExitstRecord

프로시저 내용

ALTER PROCEDURE dbo.ExitstRecord

        (

        @ID varchar(50),

        @SUBJECT varchar(50),

        @CHECK tinyint OUTPUT

        )

AS     

SELECT @CHECK=COUNT(*) FROM MemberRecord WHERE ID=@ID AND SUBJECT=@SUBJECT

        RETURN

프로시저 설명

ID와 과목명을 입력받아 두개의 값이 일치하는 데이터가 데이터베이스에 몇 개 있는지 보여준다.

 

 

 

프로시저 이름

FindFile

프로시저 내용

ALTER PROCEDURE dbo.FindFile

(

        @FILENAME varchar(50)

)      

AS

        SELECT FILENAME FROM XmlTable

 

        WHERE   FILENAME LIKE @FILENAME+'%' OR

               FILENAME LIKE '%'+@FILENAME OR

               FILENAME LIKE '%'+@FILENAME+'%'

 

        RETURN

 

프로시저 설명

파일이름을 입력 받아 해당이름으로 시작하는 값을 가진 데이터, 중간에 해당이름이 들어간 데이터,마지막에 해당이름이 들어간 데이터들을 검색한다

 

프로시저 이름

FindImage

프로시저 내용

ALTER PROCEDURE dbo.FindImage

(

        @IMAGENAME varchar(50)

)

       

AS

        SELECT IMAGENAME FROM ImageTable

 

        WHERE   IMAGENAME LIKE @IMAGENAME+'%' OR

               IMAGENAME LIKE '%'+@IMAGENAME OR

               IMAGENAME LIKE '%'+@IMAGENAME+'%'

 

        RETURN

 

프로시저 설명

이미지이름을 입력 받아 해당이름으로 시작하는 값을 가진 데이터, 중간에 해당이름이 들어간 데이터,마지막에 해당이름이 들어간 데이터들을 검색한다

 

프로시저 이름

ImageUpload

프로시저 내용

ALTER PROCEDURE dbo.ImageUpload

        (

        @ID varchar(50),

        @TITLE varchar(50),

        @IMAGE image,

        @SIZE int

        )

AS

        INSERT INTO ImageTable VALUES(@ID,@TITLE,@IMAGE,@SIZE)

 

        RETURN

 

프로시저 설명

이미지 저장정보를 입력받아 데이터베이스에 정보를 저장한다

 

 

프로시저 이름

InsertMember

프로시저 내용

ALTER PROCEDURE dbo.InsertMember

        (

        @ID varchar(20),

        @PW varchar(20),

        @NAME varchar(20),

        @EMAIL varchar(20),

        @BIRTH varchar(10),

        @PHONE varchar(20),

        @ADDR varchar(50),

        @DEPARTMENT varchar(20),

        @MAJOR varchar(20)

        )      

AS

        INSERT INTO Member VALUES(@ID,@PW,@NAME,@EMAIL,@BIRTH,@PHONE,@ADDR,@DEPARTMENT,@MAJOR)

        INSERT INTO LoginState VALUES(@ID,0)

 

        RETURN

 

프로시저 설명

회원가입 정보를 입력받아 정보를 테이블에 입력하고 로그인상태를 저장하는 테이블에 기본정보를 저장

 

프로시저 이름

LoginREQ

프로시저 내용

ALTER PROCEDURE dbo.LoginREQ

        (

        @ID varchar(20),

        @PW varchar(20),

        @CHECK tinyint OUTPUT

        )

AS

        EXEC ExistMember @ID,@PW,@CHECK OUTPUT

 

        if(@CHECK = 1)

        BEGIN

               EXEC UpdateState @ID

        END

 

        RETURN

 

프로시저 설명

로그인 요청으로 ID,PW값이 둘 다 일치하는 데이터가 존재하면 해당 ID STATE 1로 변환

 

프로시저 이름

LogoutState

프로시저 내용

ALTER PROCEDURE dbo.LogoutState

        (

        @ID varchar(20)

        )

AS

        UPDATE LoginState SET STATE = 0 WHERE ID = @ID

        RETURN

 

프로시저 설명

ID를 입력받아 해당 ID의 로그인STATE 0로 변경합니다

 

프로시저 이름

LogoutREQ

프로시저 내용

ALTER PROCEDURE dbo.LogoutREQ

        (

               @ID varchar(20),

               @CHECK tinyint OUTPUT

        )

AS      EXEC ExistID @ID,@CHECK OUTPUT

        if(@CHECK != 0)

        BEGIN

               EXEC LogoutState @ID

        END    

        RETURN

프로시저 설명

ID를 입력받아 해당 값이 존재하면 해당 ID의 로그아웃시키는 프로시저를 실행

 

프로시저 이름

UpdateInfo

프로시저 내용

ALTER PROCEDURE dbo.UpdateInfo

        (      

        @ID varchar(20),

        @PW varchar(20),

        @NAME varchar(20),

        @EMAIL varchar(20),

        @BIRTH varchar(10),

        @PHONE varchar(20),

        @ADDR varchar(50),

        @DEPARTMENT varchar(20),

        @MAJOR varchar(20)

        )      

AS      UPDATE Member SET PW=@PW,

NAME=@NAME,EMAIL=@EMAIL,BIRTH=@BIRTH,PHONE=@PHONE,ADDR=@ADDR,

DEPARTMENT=@DEPARTMENT,MAJOR=@MAJOR

WHERE ID=@ID

        RETURN

프로시저 설명

회원정보를 입력받아 ID값과 일치하는 곳의 데이터를 입력받은 값으로 업데이트 시킵니다.

 

프로시저 이름

UpdateState

프로시저 내용

ALTER PROCEDURE dbo.UpdateState

        (

        @ID varchar(20)

        )

AS      UPDATE LoginState SET STATE = 1 WHERE ID = @ID

        RETURN

프로시저 설명

ID를 입력받아 해당 ID의 로그인STATE 1로 변경합니다

 

프로시저 이름

UpLoadFile

프로시저 내용

ALTER PROCEDURE dbo.UpLoadFile

        (

        @ID varchar(50),

        @FILENAME varchar(50),

        @DATAFILE image,

        @FILESIZE int

        )

AS      INSERT INTO XmlTable VALUES(@ID,@FILENAME,@DATAFILE,@FILESIZE)

        RETURN

프로시저 설명

파일정보를 입력받아 테이블에 저장합니다

 

프로시저 이름

UpLoadImage

프로시저 내용

ALTER PROCEDURE dbo.UpLoadImage

        (

        @ID varchar(50),

        @IMAGENAME varchar(50),

        @IMAGEFILE image,

        @IMAGESIZE int

        )

AS

        INSERT INTO ImageTable VALUES(@ID,@IMAGENAME,@IMAGEFILE,@IMAGESIZE)

        RETURN

 

프로시저 설명

이미지정보를 입력받아 테이블에 저장합니다

 

프로시저 이름

ViewInfo

프로시저 내용

ALTER PROCEDURE dbo.ViewInfo

        (

               @ID varchar(50)

        )

AS

        SELECT * FROM Member WHERE ID=@ID

        RETURN

 

프로시저 설명

ID를 입력받아 해당ID와 일치하는 곳의 데이터를 보여준다

 

프로시저 이름

ViewRecord

프로시저 내용

ALTER PROCEDURE dbo.ViewRecord

        (

        @ID varchar(50)

        )

AS

        SELECT SUBJECT,CREDITS,RESULT FROM MemverRecord WHERE ID=@ID

        RETURN

 

프로시저 설명

ID를 입력받아 해당ID와 일치하는 곳의 성적정보 중 과목,학점,성적을 보여준다

 

프로시저 이름

InsertRecord

프로시저 내용

ALTER PROCEDURE dbo.InsertRecord

        (

        @ID varchar(50),

        @SUBJECT varchar(50),

        @CREDITS varchar(50),

        @RESULT varchar(50)

        )

       

AS

        INSERT INTO MemberRecord VALUES(@ID,@SUBJECT,@CREDITS,@RESULT)

        RETURN

 

프로시저 설명

성적정보 값을 입력 받아 테이블에 저장합니다

 

프로시저 이름

InsertRecordREQ

프로시저 내용

ALTER PROCEDURE dbo.InsertRecordREQ

        (

        @ID varchar(50),

        @SUBJECT varchar(50),

        @CREDITS varchar(50),

        @RESULT varchar(50),

        @CHECK tinyint OUTPUT

        )

AS

        EXEC ExitstRecord @ID,@SUBJECT,@CHECK OUTPUT

        IF(@CHECK=0)

        BEGIN

        EXEC InsertRecord @ID,@SUBJECT,@CREDITS,@RESULT

        END

        RETURN

 

프로시저 설명

성적정보를 입력받고 입력받은 ID,과목값이 존재하지 않으면 성적정보를 저장

 

프로시저 이름

JoinMember

프로시저 내용

           ALTER PROCEDURE dbo.JoinMember

        (

        @ID varchar(20),

        @PW varchar(20),

        @NAME varchar(20),

        @EMAIL varchar(20),

        @BIRTH varchar(10),

        @PHONE varchar(20),

        @ADDR varchar(50),

        @DEPARTMENT varchar(20),

        @MAJOR varchar(20),

        @CHECK tinyint OUTPUT

        )      

AS

        EXEC ExistID @ID,@CHECK OUTPUT

        if(@CHECK = 0)

        BEGIN

               EXEC InsertMember @ID,@PW,@NAME,@EMAIL,@BIRTH,@PHONE,@ADDR,@DEPARTMENT,@MAJOR        

        END

        RETURN

 

프로시저 설명

회원정보를 입력받고 해당 아이디가 존재하지 않으면 테이블에 회원정보를 저장