2009년 10월 14일
Posted by 검지발가락♡

사용한 개발 툴 : MAX2
2009년 12월 14일

3. 동작설명

3.1 Clock 
sw3을 누르면 현재 시간(시간, 분)을 설정할 수 있습니다. 
sw0을 눌러서 현재 시간을 설정해 줍니다. sw0을 누를수록 시간이 증가합니다. 
시간은 LED가 껴지는 것을 보고 알 수 있습니다. (led0 가 켜지면 1시, led11이 켜지면 12시)
sw1을 누르면 count가 증가하면서 분의 십의 자리가 설정 됩니다.
sw2를 누르면 count가 증가하면서 분의 일의 자리가 설정 됩니다. 
다시 sw3을 누르면 현재 시간 설정이 완료 됩니다.

3.2 Alarm 
sw20을 1로 설정해 놓으면 ‘알람 모드’로 설정 됩니다. 
sw3을 누르면 알람 시각을 설정할 수 있습니다. 
sw0을 눌러서 알람 시각을 설정해 줍니다. sw0을 누를수록 시각이 증가합니다. 
시각은 LED가 껴지는 것을 보고 알 수 있습니다. (led0 가 켜지면 1시, led11이 켜지면 12시)
sw1을 누르면 count가 증가하면서 분의 십의 자리가 설정 됩니다.
sw2를 누르면 count가 증가하면서 분의 일의 자리가 설정 됩니다. 
다시 sw3을 누르면 알람 시각 설정이 완료 됩니다.
sw20을 0으로 설정하면 다시 시계로 돌아가고 맞춰놓은 시간에 알람이 울립니다.

Posted by 검지발가락♡

사용한 개발 툴 : MAX2, EMPOS2
2009년 9월 21일

modulo-8 UP/Down 카운터 설계

 

1) 상태도 (State Diagram)을 그린다.
생략

2) 입력변수, 상태변수 결정한다.

입력변수 = I (I=0 경우 Down, I=1 경우 Up 카운터로 동작)
상태변수 = S2, S1, S0

3) 사용할 플립플롭 종류 선택한다.

  사용 플립플롭 = JK Flip-Flop   

3) 다음 상태표 & 상태전이표

현재 상태

다음 상태

플립플롭 입력

I=1 I=0

S2

S1

S0

S2

S1

S0

S2 S1 S0

J2

K2

J1

K1

J0

K1

J2

K2

J1

K1

J0

K0

0

1

1

0

0

1

0

1

0

0

×

×

1

×

0

0

×

×

0

×

1

0

0

1

1

1

1

0

1

1

1

×

1

×

×

0

0

×

1

×

×

0

1

1

1

1

0

0

0

0

1

×

0

×

1

×

1

×

1

×

1

×

0

1

0

0

0

1

0

1

1

1

×

1

1

×

0

×

×

0

1

×

1

×

0

1

0

0

1

1

1

0

0

0

×

×

0

1

×

1

×

×

1

0

×

4) 3개의 플립플롭 입력 논리식을 구한다.

 

  5) GDF

  

 


Posted by 검지발가락♡

사용한 개발 툴 : SAFEModeler, MSSQL서버2000

2009년 12월 24일

 요구명세서

MJ 주유소는 self 주유소로 고객이 직접 주유를 하는 시스템이다. 고객은 원하는 정유사의 주유기에서 주유를 할 수 있다. 고객이 주유를 할 때 날짜와 주유한 시간, 주유 가격, 결제 방법이 등록된다. 고객은 회원 가입을 할 수 있다. 회원 가입 시 이름, 연락처만 입력하면 회원 가입을 할 수 있다. 고객번호는 자동으로 등록 된다. 만약 회원인 고객은 회원번호를 입력하면 포인트를 모을 수 있다. 포인트는 주유 금액의 1%가 적립된다. 포인트에 따라 상품을 수령 할 수 있다. 100p는 티슈를 2000p는 세차 권을 10000p는 3만 원짜리 주유티켓을 준다. 상품을 수령했을 경우 포인트는 차감 된다.

MJ 주유소의 주유기 소유자들은 좋은 기름을 공급 받을 수 있도록, 각 단말기의 공급자 목록을 관리해야 한다. 공급업자는 사원번호로 식별하고, 정유사, 이름, 연락처, 차량번호, 공급량, 계약기간을 가진다.

MJ 주유소의 주유기 소유자들은 고객들이 안심하고 거래 할 수 있도록 자신의 이름과 연락처를 기록해 놓아야 한다.

ER 다이어그램

 



ER 스키마

<주유기table>

단말기번호

잔여량

소유주이름

소유주연락처

공급자 사원번호

 

<공급자 table>

사원번호

회사

이름

연락처

차량번호

공급량

계약기간

 

<고객 table>

날짜

시간

주유 가격

결제방법

단말기번호

고객번호

 

<회원고객 table>

고객번호

이름

연락처

포인트

 

< 총 포인트 table>

총 포인트

100

2000

10000


DDL 적용사례

// 고객의 번호가 디비에 있는지 검색

create function dbo.sfn_IsSamePass  

@pass1 varchar(6), @pass2 varchar(6)

)

return bit

as

begin tran

declare @err int

declare @count tinyint

declare @asccii1 tinyint

declare @asccii2 tinyint

set @isSame = 0

set @count =1

while @count <= 6

begin

set @ascii1 = ascii(substring(@pass1, @count, 1)

set @ascii2 = ascii(substring(@pass2, @count, 1)

if (@ascii1 is null) or (@ascii2 is null) or (@ascii2 <> @ascii2)

break

else

set @count = @count +1

end

if (@ascii1 is null and @ascii2 is null)

or @count > 6

set @isSame = 1

else

set @isSame = 0

return @isSame

end

go

 

//가격으로 몇 리터를 주유 했는지 알 수 있도록......... 나중에 주유기 테이블의 잔여 량에 빼준다.

 

if object_id('dbo.sfn_cost') is not null

drop function dbo.sfn_cost

go

create function dbo.sfn_cost

(@cost tinyint)

returns tinyint

begin

if @cost is null

set @cost = 0

else

set @cost = @cost / 1500

return @cost

end

Posted by 검지발가락♡
사용한 개발 툴: MS SQL 서버2000
2009년 11월 3일

한학기 동안 배운거 정리

● convert(date_type, getdate(), style)

● IDENTITY 속성 : 주 키에 identity 속성을 부여하면 행을 삽입할 때마다 주 키의 값이 기존의 값과 중복되지 않는지 조사할 필요가 없고, 자동으로 관리되어 정확하고 편리하다.

● 유효성 검사란 삽입하거나 갱신할 때 열의 값이 정의된 규칙에 부합되는지를 검사하는 것이다 여기에는 제약 조건 체크(check)와 개체규칙(rules)이 있다.

● 인덱스 설정할 필요가 있는 것들

․ 주 키

․ 외래 키 또는 조인할 때 자주 사용되는 열

․ 값이 유일해야 하는 열

․ 키 값의 범위가 검색 대상이 되는 열

․ 정렬된 순서로 액세스 되는 열

 

● 조인에는 크로스 조인, 내부조인, 외부 조인, 자체 조인, 상호연관 하위 질의 등이 있다.

● Top N 은 결과 집합에서 처음 N개의 행만 돌려주도록 제약하는 것이다.

● COMPUTE 절은 SELECT문에 포함되어, 결과 집합 뒤에 단일 값으로 전체 행에 대한 요약 결과 집합을 만들어 주며, 두 번 이상 반복되어 나타날 수 있다.

● COMPUTE BY 절은 SELECT 문에 포함 되어, 그룹화 대상 열값이 바뀔 때마다 단일 값으로 중간 요약 결과 집합을 만들어 주고, 반드시 ORDER BY 절이 같이 사용되어야 하며, 역시 두 번 이상 반복되어 나타날 수 있다.

● SELECT INTO 문은 새로운 테이블을 만들고 조회 결과를 이 테이블에 행으로 삽입한다.

● INSERT SELECT 문은 조회 결과를 기존의 테이블에 누적하여 삽입시켜준다.

● 명시적 트랜잭션은 BEGIN TRAN 문으로 열리고 COMMIT TRAN 문으로 닫히는, 눈에 보이는 트랜잭션이다. 명시적 트랜잭션은 사용자 정의 트랜잭션이라고도 한다.

● 암호를 비교할 때는 LEN 함수를 사용할 수 없으며, 단순히 = 연산자로 비교할 수도 없고 sfn_IsSamePass 와 같은 사용자 정의 함수를 사용해야 한다.

● 저장 프로시저를 최초로 작성하고 호출할 때 내부적으로 처리되는 절차는 다음과 같다.

․ 생성 : 구문 분석을 수행하여 오류가 없을 경우, 저장 프로시저의 이름은 해당 데이터베이스 내의 sysobjects 테이블에, 인자는 syscolumns테이블에, 텍스트는 syscomments 테이블에 각각 저장된다.

․ 최적화 : 저장 프로시저를 최초로 호출하면 sql 서버의 질의 최적화기가 저장 프로시져 내의 Transact-SQL 문을 분석하여 가장 빨리 데이터를 액세스 할 수 있는 계획을 만든다.

․ 컴파일 : SQL 서버의 컴파일러가 저장 프로시저를 실행 계획으로 컴파일 하여 프로시저 캐시에 저장한다.

․ 실행 : 프로시저 캐시 내의 실행 계획을 실행한다.

● 트리거는 제약 조건 등에 비해 성능이 저하된다는 단점이 있기는 하지만, 저장 프로시저와 더불어 데이터베이스 내에서 업무 규칙을 구현한다고 할 수 있다는 더 큰 장점이 있다. 트리거는 체크나 규칙보다 훨씬 복잡한 데이터 무결성을 강화 할 수 있으며, 체크나 규칙에서는 불가능한 개인화된 오류 메시지를 발생시킬 수도 있다.


-도서관 ER

디비출력.hwp



-5장 기초SQL문 , 6장 Transact-SQL, 8장 데이터 형과 데이터 무결성

디비출력(5-6).hwp

디비출력(8).hwp

Posted by 검지발가락♡

사용한 개발 툴 : ERwin, SAFEModeler
2009년 10월 21일
요구명세서 

S대학은 전기 대학원생(석사과정) 을 모집하고 있다. 더 좋은 대학원생을 모집하기 위해 지원자들을 관리할 수 있는 DBMS를 구축하기로 하였다.

▣ 지원자는 지원번호가 부여된다.

▣ 지원자는 지원 양식에 지원일자 주민등록 번호 성명(한글), 성명(영문) , 성명(한자), 성별, 주소, 본적, 전화번호, 종교, 취미, 혈액형, 윌 수입을 작성해야 한다.

▣ 지원자는 학력에 학교명, 입학 년도, 졸업 년도, 상태(중퇴, 졸업)을 작성해야한다.

▣ 지원자는 군 필 여부 난에 군번, 징집 년도, 군별코드, 병과코트, 계급코드, 체격등위, 입대일, 전역일 을 작성해야 한다.

▣ 지원자는 가족 사항에 가족과의 관계, 성명, 나이, 생년월일, 출신학교, 직업, 근무처, 직위를 작성한다.

지원자는 회사에 근무한 경력이 있으면 입사일자, 퇴사일자, 직위, 담당업무를 작성한다.

▣ 지원자는 수상한 내역이 있으면 수상내역, 수상일, 수상종류를 작성한다.

▣ 지원자는 자격증이 있을 시 원서번호, 주관 사, 자격증명을 작성하고

외국어 능력일 경우 수험번호, 응시일, 취득점수를 작성해 준다.

개념적 모델 설계


논리적 설계


 

Posted by 검지발가락♡