任务:
目前,数据库知道两种类型的消息:
这些消息只能由发布用户标记为好友的用户读取。 在此步骤中,您应添加第三种类型的消息。第三种类型的消息只能由指定的收件人读取。
这意味着数据库需要提供以下内容:
您的工作是为此目的实施必要的更改和附加表以及任何密钥和外键 需要的关系。
这里有两个与任务相关的现有表格(来自我的数据库的副本)。
用户表
CREATE TABLE IF NOT EXISTS `User` (
`user_id` int(10) unsigned NOT NULL auto_increment,
`given_name` varchar(60) default NULL,
`surname` varchar(60) default NULL,
`address` varchar(255) default NULL,
`city_id` int(10) unsigned NOT NULL,
`date_of_birth` datetime default NULL,
`email` varchar(80) default NULL,
PRIMARY KEY (`user_id`),
KEY `ix_user_surname` (`surname`),
KEY `ix_user_given_name` (`given_name`),
KEY `ix_user_name` (`given_name`,`surname`),
KEY `ix_user_date_of_birth` (`date_of_birth`),
KEY `ix_user_email` (`email`),
KEY `ix_user_city_id` (`city_id`)
) ENGINE=InnoDB
消息表
CREATE TABLE IF NOT EXISTS `Message` (
`message_id` int(10) unsigned NOT NULL auto_increment,
`owner_id` int(10) unsigned default NULL,
`subject` varchar(255) default NULL,
`body` text,
`posted` datetime default NULL,
`is_public` tinyint(4) default '0',
PRIMARY KEY (`message_id`),
KEY `ix_message_owner_id` (`owner_id`)
) ENGINE=InnoDB
答案 0 :(得分:1)
好的,is_public让你能够区分两种类型(例如is_public ='0'表示私有,is_public ='1'表示公共)。但是现在你有一个新的指定收据概念,所以是/否模型不再适用b / c你有3种类型。通常在这种情况下,您可以切换到标志或类型列。
所以也许制作一个message_type列,它是'PUBLIC','PRIVATE','SPECIFIED'之类的东西。
之后听起来你需要至少两张桌子。用户必须能够指定朋友,用户必须能够指定用户接收特定消息。