Дизайн базы данных: две строки или более в таблице, как их соединить? - PullRequest
0 голосов
/ 18 мая 2018

Я делаю банковскую систему.Когда вы совершаете транзакцию из одной учетной записи в другую, я добавляю строки / записи в мою таблицу транзакций.Но мне нужно соединить их вместе, поэтому, когда я просматриваю транзакцию, я вижу обе стороны.Мой вопрос должен я сделать другую таблицу, которая записывает это, или я должен добавить столбец, который содержит TransactionHeadID какого-то рода?Или есть третий и лучший вариант?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Одной из идей было бы добавить поля «от» и «к» в таблицу транзакций.Затем, если, например, вы переместите 100 $ с A на 40 $ в B и 60 $ в C, ваша таблица будет выглядеть так:

 Account | Value | From | To
---------+-------+------+------
 A       | -40   | NULL | B
 A       | -60   | NULL | C
 B       |  40   | A    | NULL
 C       |  60   | A    | NULL

Однако, я думаю, было бы лучше, если бы вы использовали дватаблицы: таблица транзакций, содержащая истинную информацию о транзакциях, не зависящую от учетных записей и от них, например хранилище, дату и т. д., и некоторый TransactionID, а также другую таблицу, например, TransactionBalanceEvent, которая будет иметь внешний ключ TransactionID, номер счета, баланс.Тогда у вас будет:

Таблица транзакций

TranID | Date
-------+----------
1      | some_date

Таблица TransactionBalanceEvent

TranID|Account|Balance
------+-------+-------
1     |      A|   -100
1     |      B|     40
1     |      C|     60
0 голосов
/ 18 мая 2018

Вы можете создать одну таблицу, содержащую детали транзакции, senderId и receiveId.senderId и receieverId будут внешними ключами таблицы пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...