我正在建立一个具有两种用户的平台:Users_A创建具有关联的唯一虚拟硬币的项目,而Users_B可以购买和交换这些硬币。
问题:
这两者中哪一个在性能上更差/更好? 还有其他可能的方法吗?
答案 0 :(得分:0)
对我来说还不清楚您到底想建模什么。但是,由于您向数据库添加了新内容而需要更改表的任何模型都是有缺陷的。
听起来对我来说是一种基本的多对多关系:
您肯定需要为用户提供一个表:
create table users
(
user_id integer primary key,
... other columns ...
);
,其中一个用于不同的硬币:
create table coin
(
coin_id integer primary key,
... other columns ...
);
您需要一个项目表。您说“关联的唯一虚拟硬币”,所以我假设一个项目只处理一种硬币:
create table project
(
project_id integer primary key,
owner_user_id integer not null references users,
coin_id integer not null references coin
... other columns
);
我不确定您对“买卖”硬币的确切含义,但是您可能需要类似转帐表的东西:
create table coin_transfer
(
from_user_id integer not null references users,
to_user_id integer not null references users,
project_id integer not null references project,
transfer_type text not null check (transfer_type in ('buy', 'exchange'))
amount numeric not null
);
您还提到了属于用户的“钱包”。您永远不会为每个钱包创建一个表,而是一个包含用户拥有该钱包信息的表。假设每种硬币的每个用户都有一个钱包,则需要这样的东西:
create table wallet
(
wallet_id integer primary key,
owner_user_id integer not null references users,
coin_id integer not null references coin,
... other columns ...
);
以上只是一个非常粗略的草图,因为您的问题中缺少很多信息。