我正在尝试开发一个投标系统,其中一个项目被列出,投标人可以放置一个出价,其中包括投标金额和信息。一个项目可能有任意数量的投标。投标人还应该能够看到所有的投标,他们已经在不同的项目。
我不熟悉SQL,也不知道如何对这个场景建模。我在想:
我看到的问题是如何将这些对投标表条目的引用存储在“职务”表条目中?
这是处理这个问题的正确方法吗?我是否应该考虑建立一个面向文档的数据库,如Mongo,而不是?
发布于 2011-05-27 22:02:56
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) );现在,您可以通过各种连接(每个用户的最高出价、所有的工作出价、所有用户的出价、最高的工作投标人等)计算出您想要的任何东西。
发布于 2011-05-27 21:55:10
你描述的是一段多到多的关系。在非常简单的形式中,您的表应该如下所示:
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次。只需移除主键,并在每个字段中放入两个常规索引以消除限制。
https://stackoverflow.com/questions/6158061
复制相似问题