1

ある人から別の人に送金できるアプリケーションを書き直しています。つまり、基本的に送信者と受信者がいます。もともとテーブルで、私は送信者と受信者の間に1対多の関係を作成しました。

現在、同じ送信者がトランザクションの受信者になることも、受信者が送信者になることもできるという新しい要件があります(つまり、受信者は送金者にお金を送り返すことができます)。これは、送信者テーブルと受信者テーブルを別々にすることに意味がないように思えます。

もう1つの難しさは、この単一テーブルのルートをたどる場合、送信者が受信者を登録する必要があるという要件にどのように対応するかということです。それは送信者の場合です。送信者がまだ送金しておらず、登録しているだけの場合でも、受信者が誰であるかを示すことができなければなりません。

4

3 に答える 3

1

これで始められるはずです。

  • が存在します。
  • 送信者です。
  • 受信者です。
  • 送信者は受信者を登録しました
  • 送信者はで受信者に転送さAmountれました。TransactionTime

ここに画像の説明を入力してください

于 2013-03-20T12:37:42.993 に答える
1

単一のテーブルの前提はばかげています。まず、これらのエンティティが少なくとも必要になります。

  • アカウントの所有者
  • アカウント
  • RegisteredSender
  • RegisteredRecipient
  • 取引

この設定を少し試して、特定の問題が発生した場合はコールバックしてください。

于 2013-03-20T12:25:29.370 に答える
1

送信者は送信者ではありません。送信者は、送信者、受信者、またはその両方の役割を果たす可能性のある個人(またはより一般的には法的当事者)です。

create table Party (
  id serial primary key,
  name text not null
);

create table Payment (
  from_party_id int not null references party(id),
  to_party_id int not null references party(id),
  paid_at timestamp not null default current_timestamp,
  check (from_party_id <> to_party_id)
);

create table Registered_Recipients (
  sender_id int not null references party(id),
  recipient_id int not null references party(id),
  check (sender_id <> recipient_id)
);
于 2013-03-20T18:57:07.647 に答える