2015-04-08 4 views
1

В настоящее время я создаю веб-приложение для управления портфелем акций, но когда дело доходит до таблицы транзакций, у меня есть некоторые проблемы, которые я хочу задать.Дизайн базы данных портфеля ценных бумаг для поддержки акции split/merge

Ниже мой запас сделка дизайн таблицы:

| column name |  datatype  | 
|----------------|----------------------| 
|  id  |  int(10)  | primary key, auto increment 
| portfolio_id |  int(10)  | reference to portfolio table primary key 
|  symbol |  varchar(20)  | stock symbol e.g: YHOO, GOOG 
|  type  | ENUM('buy','sell') | 
|  tx_date |   DATE   | 
|  price  |  DOUBLE(15,2)  | 
|  volume  |  int(20)  | 
| commission |  DOUBLE(15,2)  | 
| created_at |  TIMESTAMP  | 
| updated_at |  TIMESTAMP  | 

В моем текущем проекте, у меня нет дополнительной таблицы для хранения символа акции. Я генерирую список символов запаса (используя некоторый запас api) для пользователя, который выбирает, когда они пытаются создать новую запись транзакции, и я думаю, что такой подход может вызвать некоторую проблему, когда есть разделение/слияние запасов, потому что я не могу иметь возможность снова получить стоимость акций, используя тот же символ.

Я хотел бы знать, как мне изменить таблицу, чтобы поддержать случай разделения акций/слияния?

ответ

0

В США насчитывается менее 4000 акций. Почему бы вам не использовать символ запаса в качестве основного ключа. Как вы планируете получать дивиденды?

+0

Потому что я хотел бы поддержать и те запасы за пределами США. И даже я установил символ как первичный ключ, проблема с разделением акций/слиянием не может быть исправлена. Для части дивидендов, я думаю, я добавлю ее в реализованную Прибыль портфеля. Но не сохраняется в таблице транзакций – Katrin

0

сплиты

... symbol type shares ... 
... AAPL split 100 ... 

2 1 расколу; 100 акций стали 200 акций.

Дивиденды

symbol type amount 
AAPL div 20.00 

Слияния

Обход: Запись слияния как продажи или старого фонда и покупки нового фонда. Добавьте соответствующие примечания в столбец «примечания».

Более точная (но более сложная) стратегия состоит в том, чтобы перепроектировать всю базу данных, чтобы каждая торговля была в буквальном смысле сделкой одной транзакции для другой. A 'buy' торгует наличными за акцию. «Продавать» торгует акциями за наличные. Слияние торгует актом A для акций B. Разделение сделок 0 акций на 100 акций и т. Д. Денежные средства - это еще один класс активов.

Иностранные акции

Все основные финансовые сайты имеют это выяснили. symbol.exchange - уникальный идентификатор. Не нужно изобретать колесо и создавать новый столбец id.

Вам также потребуется добавить валютную колонку для иностранных акций.