Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение данных транзакций платежных систем / 2 сообщений из 2, страница 1 из 1
25.02.2005, 17:59
    #32934339
aego
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение данных транзакций платежных систем
Помогите пожалуйста выбрать правильное решение.

Нужно хранить данные транзакций с нескольких платежных систем (webmoney, e-gold, paycash, rupay и иже с ними)
Часть данных у них общая - id, amount, payer, payee, stamp, batch
и у некоторых систем есть дополнительные, например invoice (webmoney), currency (wm, e-gold) и т.п.

Как лучше поступить:
1) общие поля - в одну таблицу + несколько таблиц по числу платежных систем со специфичными данными, т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE `operation` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `class` char( 16 ) NOT NULL default '',   // это название второй таблицы (egold, webmoney, ...)
  `payer` char( 128 ) NOT NULL default '',
  `payee` char( 128 ) NOT NULL default '',
  `amount` decimal( 8 , 2 ) NOT NULL default '0.00',
  `stamp` datetime NOT NULL default '0000-00-00 00:00:00',
  `batch` char( 128 ) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
CREATE TABLE `operationEgold` (
  `id` int( 10 ) unsigned NOT NULL default '0',
  `metal` char( 16 ) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
в operationEgold id это одновременно и внешний ключ
2) общая таблица + таблица "атрибутов" (здесь у всех дополнительных данных получается один тип должен быть, что не всегда удобно)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE `operation` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `payer` char( 128 ) NOT NULL default '',
  `payee` char( 128 ) NOT NULL default '',
  `amount` decimal( 8 , 2 ) NOT NULL default '0.00',
  `stamp` datetime NOT NULL default '0000-00-00 00:00:00',
  `batch` char( 128 ) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
CREATE TABLE `operationExtra` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `operation` int( 10 ) unsigned NOT NULL default '0',
  `name` char( 32 ) NOT NULL default '',
  `value` char( 128 ) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `operation` (`operation`)
) TYPE=MyISAM;
3) другой вариант?
...
Рейтинг: 0 / 0
25.02.2005, 18:03
    #32934351
aego
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение данных транзакций платежных систем
ps: выборки/сортировки предполагаются только по полям основной таблицы
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение данных транзакций платежных систем / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]