Каков будет лучший дизайн таблицы для сайта платной подписки? - PullRequest
1 голос
/ 09 августа 2011

мой сайт будет предлагать платную ежемесячную подписку, и я пытался найти наилучший способ настроить свои таблицы. Пользователи могут выбрать оплату через PayPal, если они хотят перейти на платные услуги. Я предполагаю, что если пользователь решит прекратить работу со службами, его учетная запись будет ограничена версией с ограниченным бесплатным доступом.

Я думаю, что я могу сохранить это в одной таблице, как данные пользователя, т.е.:

USERS
ID| NAME| MEMBERSHIP_TYPE| LAST_PAYMENT_DATE| ACTIVE_TILL| TRANSACTION_ID

Мне нужно разделить его на две разные таблицы

USERS
ID| NAME

MEMBERSHIPS
USER_ID|MEMBERSHIP_TYPE|LAST_PAYMENT_DATE|ACTIVE_TILL|TRANSACTION_ID

И хранить историю платежей в третьей таблице. Я буду использовать повторяющиеся счета здесь.

1 Ответ

2 голосов
/ 09 августа 2011

Вы хотите отделить платежные транзакции от своего списка пользователей, потому что вы хотите иметь возможность просматривать историю продлений.У вас могут быть пользователи, которые платят, запрашивают возврат, платят снова, срок их членства истекает, а затем обновляется - и так далее.Без ведения таблицы транзакций, в которой ведется история этого действия, вы можете оказаться не в состоянии распутать проблему обслуживания клиентов или бухгалтерского учета.

Предполагая, что у вас есть только один вид платного членства (что может не являться будущим- безопасное предположение) и, предполагая, что вы установили надлежащие процедурные элементы управления, такие как использование хранимых процедур или триггеров для синхронизации данных в транзакционных оболочках, вы можете денормализовать тип членства и быть активными до даты в таблице USERS.Этот тип избыточности может помочь вам повысить производительность, но это также потенциально очень рискованно, если вы разрешите избыточным данным синхронизироваться.Я бы рекомендовал попробовать это без избыточности, а затем посмотреть, есть ли у вас практические проблемы с производительностью, прежде чем прибегать к использованию денормализованных полей в ПОЛЬЗОВАТЕЛЯХ.

...