表3外键,具有值和null

时间:2018-03-15 21:58:02

标签: mysql

所以我有一个用户表。用户可以是作者或普通用户。没有定义列表示用户是作者,只有故事表中有外键(author_id = user.user_id)。

现在我想添加一个评论功能。用户可以查看故事和作者,也可以评论章节。

所以我的表看起来像这样:

**review**
review_id(PK AI)
user_id(FK - user.user_id)//reviewer NOT NULL
author_id(FK - user.user_id)//reviewee NULL
story_id(FK - story.story_id)//reviewee NULL
chapter_id(FK - chapter.chapter_id)//reviewee NULL

**review_content**
review_content_id(PK AI)
review_id(FK)
rating decimal
content text
date_added datetime

由于user_table中的user_id,故事表中的story_id和章节表中的chapter_id都是PK AI。重复/相同值的可能性为100%。

例如:user_id(5)审核了作者(10)。 user_id(5)还审阅了story_id(10),或者user_id(5)评级为chapter_id(10)。

因此,要确定评论是针对故事/作者/章节。我打算将其他FK归零并将值插入相关的FK。

如果对某个故事进行评论,那么story_id(FK)将具有值,同时author_id和chapter_id将为空。

所以在我的查询中它将是:

//fetch review for story
$this->db->from('review');
$this->db->where('author_id', NULL);
$this->db->where('story_id', $story_id);
$this->db->where('chapter_id', NULL);
$this->db->get()->result();

我想知道我的桌子设计是否正确。或者我应该坚持制作不同的评论表(作者,故事,章节)。

我真的想为3编写可重用的方法,而不是为每种类型编写3。

例如:检查是否存在评论。插入评论。取。如果我要制作3个不同的表格,那么我必须为每个函数制作3种不同的方法。

0 个答案:

没有答案