사용한 개발 툴 : SAFEModeler, MSSQL서버2000
♣요구명세서
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
'공대생의 일기 > 2009年 2학기' 카테고리의 다른 글
[생명과학]귀 유모세포조사 & Micro Array 조사 발표 (0) | 2010.12.21 |
---|---|
[마이크로프로세서]알람시계구현 (0) | 2010.12.21 |
[마이크로프로세서]동기카운터설계 (0) | 2010.12.21 |
[DBMS활용및실습]DBMS요약, ER, sql문 과제 (0) | 2010.12.21 |
[DBMS활용및실습]요구명세서,ER다이어그램,ERwin (0) | 2010.12.21 |