2

我正在开始 Web 开发并开始使用 PHP 和 MySQL。我正在尝试制作一个类似于技术博客的 CMS,并坚持数据库设计。每个帖子可以是以下任何一种类型。

  1. 富文本 - 单部分
  2. 富文本 - 多个部分
  3. 视频链接 - 单部分
  4. 视频链接 - 多个部分
  5. 附件 - 单件
  6. 附件 - 多个部分

(附件可以是pdf、doc、ppt)

每个帖子都在部分下。这些部分存储在一个表中。部分的示例是

教程 - 允许所有类型 代码片段 - 只允许 1 个 提示或黑客 - 只允许 1,2,3,4 新闻更新 - 只允许 1 和 3 评论 - 只允许 1 和 3


所以我的问题是

  1. 如何存储和区分单篇文章和多篇文章?
  2. 存储附件的可行/最佳方式是什么?
  3. 如何关联部分和帖子?即,如何知道/存储特定部分可以支持帖子类型(全部、仅 1、仅 1 和 2 等)。

编辑:通过单一方式,我的意思是 1 个帖子只有 1 个部分,通过多部分,我的意思是 1 个帖子可以有几个部分

4

2 回答 2

0
  1. 我猜“单”是指一篇文章与一个部分相关,多部分是指几篇文章与一个部分相关?

    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
    

    注意:单个是一个帖子,多个帖子链接到同一部分。

  2. 在哪里存储附件: 在您的 Web 服务器的文件系统中,将文件名保存在table.content. 小型帖子类型(例如链接)可以直接存储在table.content --> 保持您的数据库精简和执行

  3. 相关章节和帖子: 作者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,这是在 php 脚本中使用if...or完成的switch...case
于 2013-02-24T09:00:13.820 回答
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

还可以快速查看其他流行平台的模式

于 2013-02-24T09:28:47.197 回答