数据库架构 - 基于“项目”创建私人消息传递

时间:2013-12-12 08:57:34

标签: php mysql

users表:

CREATE TABLE `users` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `unique_id` varchar(23) NOT NULL,
  `full_name` varchar(100) DEFAULT NULL,
  `name` varchar(50) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`uid`),
  UNIQUE KEY `unique_id` (`unique_id`) USING BTREE,
  UNIQUE KEY `email` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8;

items表:

CREATE TABLE `items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `item_photo` text,
  `item_name` varchar(100) DEFAULT NULL,
  `item_description` varchar(500) DEFAULT NULL,
  `item_price` varchar(10) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `category_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_user_id` (`user_id`) USING BTREE,
  KEY `fk_category_id` (`category_id`) USING BTREE,
  CONSTRAINT `items_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`),
  CONSTRAINT `items_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8;

我想做的是为我的项目创建一个私人消息系统。在此之前,我已经实现了一个评论系统,它运作良好(拉出comments具有相同的item_id)。您可以看到DDL并查询here。但是当谈到这一点时,我发现很难想到私人消息传递模型。

基本上,私人消息仅对两个用户(卖家和出价人)之间的商品价格出价。其他注册用户无法看到其他人出价。

这是我尝试创建Bids表:

CREATE TABLE `bids` (
  `id` int(11) NOT NULL,
  `bid` float DEFAULT NULL,
  `message` varchar(255) DEFAULT NULL,
  `from_uid` varchar(255) DEFAULT NULL,
  `to_uid` varchar(255) DEFAULT NULL,
  `to_iid` int(11) DEFAULT NULL,
  `time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我也尝试将外键变成bids表,但似乎对我来说已经太复杂了。所以错误 1215 - 无法添加外键约束出来了:(

如果有任何事情让我知道。


编辑: charset to utf8。无法创建外键约束

1 个答案:

答案 0 :(得分:1)

讯息

message_id
conversation_id
user_id
message

<强>会话

conversation_id
item_id
user_id

<强> BIDS

bid_id
item_id
user_id
amount