基础故事分享网站的数据库设计
表:
Users User_profile
-------- -------------
user_id(PK) user_profile_id(PK)
username user_id(FK)
password display_name
date_created birth_date
last_login gender
Story story_chapter chapters
------ ----------------- -------------
story_id(PK) story_chapter_id(PK) chapter_id(PK)
image_id(FK) story_id(FK) chapter_title
story_title chapter_id(FK) chapter_content
synopsis date_added
last_updated
story_genre story_tag story_content_warning
----------- --------- ----------------------
story_genre_id(PK) story_tag_id(PK) story_content_warning_id(PK)
story_id(FK) story_id(FK) story_id(FK)
genre_id(FK) tag_id(FK) content_warning_id(FK)
genre tags content_warning
------- ---------- ----------------
genre_id(PK) tag_id(PK) content_warning_id(PK)
genre_name tag_name content_warning
Published_story
----------------- Profile_image image_type
published_id(PK) -------------- ------------
story_id(FK) profile_image_id(PK) image_type_id(PK)
user_id(FK) image_type_id(FK) type_name
published_date file_name
last_updated file_path
Bookmark Follow_author
---------- --------------
bookmark_id(PK) Follow_id(PK)
published_id(FK) published_id(FK)//get the user_id in published table
user_id(FK) user_id(FK)//user_id of the user who followed
bookmark_date follow_date
review review_type chapter_review/rate
------------ ----------- --------------------
review_id(PK) review_type_id(PK) chapter_rate_id(PK)
published_id(FK) type_name chapter_id(FK)
review_type_id(FK) user_id(FK)
rating rating
content/summary rate_date
review_date
image_type
表没什么特别的。 行type_name
引用此图像用于哪个页面,因为每个页面具有不同的显示尺寸。 例如: 'story'
类型名称用于显示故事图像封面(200x200)。 'user'
用于用户配置文件(100x100)。
我在codeigniter中为此使用了image_lib。 $this->image_lib->resize();
所以在我上传图片上传的文件夹中。 我存储3种类型,原始版本,200x200版本和100x100版本。
用户可以:
让我详细说明通知部分。
用户:
如果将新章节添加到故事(书签)接收通知
如果作者发布了新故事(后续),则会收到通知
接收对故事/章节进行的通知更改(编辑)
作者:
如果用户/读者评论故事和评分章节,则会收到通知。
如果用户/阅读者遵循作者或书签故事,则会收到通知。
如果用户/读者评论作者(简介),则会收到通知。
基于上述规范,我的数据库设计是否足够好? 另外关于通知。 我知道我需要制作记录每个动作的日志/事件表。
例如,如果用户发布了一个故事,那么我将不得不将其插入到日志/事件表中。
问题是,idk如何设计事件表。 有不同类型的事件(发布,评分,评论等)。 所以我需要一个'类型'列来区分。 但我在哪里把id外键指向事件的实际记录。
说发布事件的published_id(FK)。 或审查事件的review_id(FK)。
将一列作为action_id(FK)但将其指向多个表(published_story,review,bookmark等)是错误的。
我还在网上读到,它有多个外键列是空的。 由于对于第1行,我只需要1个外键来指向哪个表,因此其余列将为空。
Event
----------
event_id(PK)
publish_id(FK) NULL
bookmark_id(FK) NULL
review_id(FK) NULL
Follow_id(FK) NULL
event_date
更新:
我真的不知道如何设计我的通知系统。
如果我不想要多个空外键的上表,我必须将它们分隔到不同的表中。
event_publish event_review event_follow
------------- ------------- -------------
event_publish_id(PK) event_review_id(PK) event_follow_id(PK)
publish_id(FK) review_id(FK) follow_id(FK)
event_bookmark event_chapter_rate
--------------- -------------------
event_bookmark_id(PK) event_chapter_rate_id(PK)
bookmark_id(FK) chapter_rate_id(FK)
我如何将上述表格并入我的通知系统呢?
链接地址: http://www.djcxy.com/p/70627.html