我正在尝试开发一个出价系统,其中列出了一个项目,并且出价者可以出价,其中包括出价金额和消息。一个项目可能有任意数量的出价。投标人还应该能够看到他们在不同项目中所做的所有出价。
我对SQL不熟悉,所以我不确定如何为这种情况建模。我在想以下几点:
我看到的问题是如何将这些引用存储到作业表条目中的Bid表条目中?
这是解决这个问题的正确方法吗?我应该考虑使用面向文档的数据库,例如Mongo吗?
答案 0 :(得分:2)
您正在描述多对多的关系。在非常简化的形式中,您的表格看起来像这样:
user:
id int primary key
job:
id int primary key
bids:
user_id int
job_id int
primary key(userid, job_id)
foreign key (user_id) references user (id)
foreign key (job_id) references job (id)
基本上,出价表将包含表示用户和作业的字段,以及您需要的任何其他字段,例如出价金额,日期/时间戳等......
现在,我已将user_id / job_id字段作为出价表中的主键,这会将每个用户限制为每个作业1个出价。只需删除主键并在每个字段上放入两个常规索引即可删除限制。
答案 1 :(得分:1)
SQL会像你设置的那样正常运行......我会这样做:
create table usertable (
userID integer unsigned not null auto_increment primary key,
userName varchar(64) );
create table jobtable (
jobID integer unsigned not null auto_increment primary key,
jobDesc text,
posterUserRef integer not null );
create table bidtable (
bidID integer unsigned not null auto_increment primary key,
bidAmount integer,
bidDesc text,
bidTime datetime,
bidderUserRef integer not null references usertable(userID),
biddingOnJobRef integer not null reference jobtable(jobID) );
现在,您可以通过各种联接找出您想要的任何内容(每位用户的最高出价,所有出价,所有出价,最高出价者等)。