dukDukz
[블록체인] 프로젝트 DB 스키마 본문
매수 : 사는 것
매도 : 파는 것
# DB 스키마
테이블 종류
1. order table
buy / sell
2. assetsbalance table
현금에 대한 입출력 list
거래라는것은 기본적으로 2개가 있어야 한다.
돈 과 물건
혹은 물건과 물건이 교환되는 것.
거래소는 현금과 코인의 거래가 이루어진다.
현금을 갖고 있는지 파악하기 위해서 현금 입출력 내역을 저장하는 테이블이 필요하다.
총 남은 금액이 현금 자산..
코인 같은 경우에는 내가 보낸거와 받는거 총 합 구해서
나온 결과가 내가 최종으로 갖고 있는 코인이 된다.
남은 현금
내가 지금 1000만원이 있다.
비트코인을 사려고한다면.
현재 비트코인 가격 6천
내가 매수하려 한다면 총 걸 수 있는 매수량은 0.167
1천만원은 매수 예약 걸었으면 내 현금 자산은 쓸 수 없게 된다.
남은 현금 = 1000만원 - order = 사용 가능 금액
3. transaction table
buy 0.167
sell 0.167
2번 사람이 0.167 만큼 사겠다 하면
시간 기준으로 가장 오래된거가 제일 먼저 팔리게 됨 => 거래완료
그럼 이 거래 완료 된거는 또 트렌젝션 테이블에 저장이 되어야 한다.
그래서 order table 에서 거래가 사라지게 된다.
이 정도만 만들어도 스키마 굿임.
# DB 테이블 정리
* User *
userid
username
userpw
* Order *
pk (하나의 거래의 키 값)
userid
price (어떤 가격에 진행?)
qty (수량)
ordertype (매수/매도 0/1 로 나눠서.)
active (거래 전에는 0이고 거래 완료되면 1로 바뀜)
어떤 가격에 매수/매도를 얼만큼(수량) 걸었는지 구분하는 테이블
구분 값 : [매수/매도 | 가격 | 수량 | 거래처리결과]
코인종류는 하나로 한정함.
* asset *
pk (교유 키 값)
userid (어떤 회원의 입출력인지?)
input (입금)
output (출금)
아니면
price (돈 거래)
flag (입/출금)
장점 : input output 에는 null 값이 있지만 얘는 없다.
regdate (입출력한 날짜)
[어떻게 할까?]
select sum(input),sum(output) from asset where group by userid
userid 별로 input output 의 합을 더해주게됨
혹은
select
userid,
sum(input),
sum(output)
from asset
group by userid
혹은
select
a.in - a.ou as price
from(
select
userid,
sum(input) as in,
sum(output) as ou
from asset
group by userid
) as a
where userid='web7722'
* transaction *
a_orderid
a_amount
a_commision
b_orderid
b_amount
b_commision
판매자와 구매자가 둘 다 있어야만 트렌젝션이 일어난다.
'웹 개발 > 블록체인' 카테고리의 다른 글
[블록체인] 이더리움 (0) | 2021.10.11 |
---|---|
[블록체인] 블록체인의 개념 (0) | 2021.10.11 |
[블록체인] 프로젝트를 위해 기본 틀 잡기 part 1 (0) | 2021.09.28 |
[블록체인] 데몬에 http로 요청하기, 크롤링 [실습] (0) | 2021.09.27 |
[블록체인] 데몬에 http로 요청하기, 크롤링 [수업내용] (0) | 2021.09.27 |