在数据库上,我正在保存用户购买的篮子:
USERS
Id
Name
BASKETS
Id
UserId
Name
每个篮子都是一组预定义的包:
BASKET_PACKAGES
BasketId
PackageId
PACKAGES
PackageId
Name
每个包都是一组预定义的产品:
PACKAGE_PRODUCTS
PackageId
ProductId
PRODUCTS
Id
Name
在每个篮子里,我需要为每个产品定义一个VOTE值。
每个用户可以在不同的场合以不同的方式对产品进行投票,例如,在不同的篮子中。
最好的方法是什么?
我会创建表:
create table basket_product_vote (
basket_id int not null,
product_id int not null,
voted_on timestamp not null,
vote_value int not null,
constraint fk1_basket foreign key (basket_id)
references basket (id),
constraint fk2_product foreign key (product_id)
references product (id)
);
可以包含user_id
,但我决定不默认添加它,因为原则上它可以使用外键获得。
此外,您可能希望创建额外的索引以加快搜索速度。
创建如下的实体
BasketVote
BasketVoteId PK
BasketId FK
ProductId FK
UserId FK
Vote
您也可以使用PackageProductId而不是ProductId,它们都基于您的要求。