1. DB에 들어가야할 정보들


  • 국가 정보

    • 국가코드
    • 통화코드
  • 국가별 매크로 정보

    • 기준금리, 국민계정, 물가, 통화량, 고용, 재정, 수출입 등 매크로 전반 데이터
  • 국가별 공휴일 및 휴장일 정보

    • 이는 비정기적으로 변경되기 때문에 항상 관리해야할 필요
    • 또한 주식시장은 휴장인데 금리시장은 휴장이 아니고, 이런 것들도 있기 때문에 주의 필요
    • 거래는 되는데 결제만 안 되는 날도 있고, 거래는 안 되는데 결제만 되는 날도 있어서 관리 필요
  • 법인, 상호 또는 발행사의 일반정보

    • 모회사/자회사 관계 등 기업 계층 구조 통합 필요
    • 사명 변경, 분할/합병 등도 관리 필요
    • 발행한 증권들을 모두 연결할 수 있어야
  • 법인, 상호 또는 발행사의 재무/비재무 등의 정보

    • 재무정보는 정정되더라도, 그 정정 이전의 데이터들도 보관해야 함. 그냥 엎어치면 안 됨.
  • 증권정보

    • 주식, 채권, CD, CP/STB, ELS/DLS 등의 마스터 정보
      • 단, 각 자산군은 별도의 테이블로 관리. 즉 자산군별로 마스터 테이블 필요
    • 발행사와 연결 가능
    • 유동화 정보도 연결 가능해야
  • 외환정보

  • 파생정보

    • 기본 정보 뿐만 아니라 기초자산이 되는 증권정보와의 연결이 되어야 함
  • 가격정보

    • 각 증권/파생 종목에 대한 실시간, 종가 마스터 테이블
    • 파생데이터 테이블
    • 히스토리 테이블
    • 데이터가 여러 소스를 통해 들어오더라도 표준화된 필드 구조로 변환시켜 관리해야할 필요
  • 신용등급 정보

    • 국가
    • 발행사
    • 증권
  • 시가평가 정보

2. 테이블 필드 구조와 키 설계


  • 증권 테이블에서 모든 자산군 테이블에는 공통적으로 티커, 거래소 코드, 표준식별자 등의 필드가 있어야 함. 그리고 모든 증권 테이블은 발행사 테이블과 연결되어야 함. 재무 테이블도 마찬가지임.

    • 예를 들어 재무정보 조회화면에서 발행사 티커를 입력하면 해당 발행사의 재무정보가 나와야 하고, 채권리스트 조회화면에서 발행사 티커를 입력하면 해당 발행사가 발행한 모든 채권을 조회할 수 있어야 함.
  • 여러 계층의 ID필드가 필요

    • 특히 고유의 식별자 필드가 반드시 필요
      • 증권에 대해서 고유의 코드가 필요하고 이는 채권이나 주식, 단기자금, KP물 등에도 공통적으로 적용될 수 있는 규칙이 적용되어야 함
      • 발행사에 대해서 특히 더 필요함. 사명변경이나 분할/합병 시에도 실질적으로 동일한 회사라면 그 정보가 유지되어야 하기 때문.
    • 참조 무결성을 보장하기 위한 외래키를 적절히 사용해야

3. 테이블 간 관계 및 ERD


  • 핵심 엔터티들 간의 계층적인 관계를 명확하게 매핑해야 함.
  • 예를 들어 발행사 테이블과 증권 테이블에는 일대다 관계
    • 따라서 하나의 발행사 레코드가 여러 증권 레코드의 외래키로 연결
  • 또 예를 들면 증권 테이블과 가격 테이블 간에는 일대다 관계
    • 하나의 증권에 대해 다수의 레코드에 외래키로 연결
  • 또 예를 들면 발행사 - 증권 - 시계열 데이터, 이런식으로 계층적으로 연결될 수 있어야 함
    • 이에 더해 산업분류, 지표, 파생상품 등과도 링크가 될 수 있어야 함

4. 참고


  • 핵심 엔터티를 분리하고 식별자들을 체계적으로 관리. 3차 정규화 수준에 가깝게 관리할 수 있어야. 이를 통해 동일 정보의 중복저장을 최소화해야.
  • 발행사정보 업데이트시, 이와 연결되어있는 증권 등의 테이블의 관련 레코드도 동시에 반영되어야 함
  • 적절하게 인덱스를 설정할 필요가 있음