我开始进行Web开发并开始使用PHP和MySQL。我正在尝试使CMS类似于技术博客并坚持数据库设计。每个帖子可以是以下任何一种。
(附件可以是pdf,doc,ppt)
每个帖子都在节下。这些部分存储在一个表中。部分的例子是
教程 - 允许所有类型 代码段 - 仅允许1 提示或黑客 - 只允许1,2,3,4 新闻更新 - 仅允许1和3 审核 - 仅允许1和3
所以我的问题是
编辑: 通过单一手段,我的意思是1个帖子只有1个部分,而我的意思是1个帖子可以有几个部分
答案 0 :(得分:0)
我想用"单身"你的意思是一个帖子与一个部分相关,多部分意味着几个帖子与一个部分相关吗?
db-design可以......
table section
---------------
id (int, a-i)
type (int) 1=tutorial, 2=code-snippet etc.
name (varchar)
...
table post
---------------
id (int, a-i)
section_id (int) key to section.id
ordering (int) if multi for controlling which part is first, second etc.
type (int) 1=rich-text, 2=video, 3=attachment <---- drop single/multi discrimination here
single (int) 1=yes, 2=no <---- and put it here instead
content (varchar) --> see below
description (varchar) of this post
注意:单个帖子是一个帖子,多个帖子链接到同一个部分。
存储附件的位置:
在Web服务器的文件系统中,db保存文件名table.content
。
小型帖子(例如链接)可以直接存储在table.content
中
- &GT;保持您的数据库精益和执行
关联部分和帖子:
按post.section_id
。像这样,您可以将1个或更多帖子链接到某个部分。使用post.ordering
将它们按正确的顺序排列。
section
--------------------------
id | 1
name | "How to build a CMS"
type | 1 (tutorial)
post
--------------------------
id | 1
section_id | 1
ordering | 0
type | 1 (rich-text)
content | "/files/130224_1_1_cms.rtf"
...
id | 2
section_id | 1
ordering | 1
type | 3 (video link)
content | "http://www.youtube.com/hgstersh/showid=23jfjr&blabla"
...
哪个section.type
可以拥有哪个post.type
?
section.type
已设置(例如表单中的下拉列表)post-type
的下拉列表仅提供基于section.type
的允许类型,这是在带有if...
的php脚本中完成的或switch...case
。答案 1 :(得分:0)
如果帖子可以包含多个图片,帖子,一对多关系的链接以及典型架构:
POST: id, title, ...
RICHTEXT: id, post_id, content
LINK: id, post_id, url
如果你需要多对多的关系,例如一个故事可以有很多链接,但你可以在多个故事中使用相同的链接:
POST: id, title, ...
LINK: id, url
POSTS_LINKS: id, post_id, link_id
另请快速查看其他popular platforms
的架构