0 关注者

总体设计

根据对需求的分析,我们决定使用以下数据库表来存储博客应用程序的持久数据

  • tbl_user 存储用户信息,包括用户名和密码。
  • tbl_post 存储博客文章信息。它主要包含以下列
    • title:必需,文章标题;
    • content:必需,文章正文内容,使用 Markdown 格式
    • status:必需,文章状态,可以是以下值之一
      • 1,表示文章处于草稿状态,对公众不可见;
      • 2,表示文章已发布到公众;
      • 3,表示文章已过时,在文章列表中不可见(但仍然可以单独访问)。
    • tags:可选,用于对文章进行分类的逗号分隔词列表。
  • tbl_comment 存储文章评论信息。每个评论都与一篇文章相关联,并且主要包含以下列
    • author:必需,作者姓名;
    • email:必需,作者电子邮件;
    • url:可选,作者网站 URL;
    • content:必需,评论内容,以纯文本格式。
    • status:必需,评论状态,表示评论是否已批准(值 2)或未批准(值 1)。
  • tbl_tag 存储文章标签频率信息,用于实现标签云功能。该表主要包含以下列
    • name:必需,唯一的标签名称;
    • frequency:必需,标签在文章中出现的次数。
  • tbl_lookup 存储通用查找信息。它本质上是整数值和文本字符串之间的映射。前者是我们代码中的数据表示,而后者是对应于最终用户呈现的文本字符串。例如,我们使用整数 1 来表示草稿文章状态,并使用字符串 Draft 来向最终用户显示此状态。该表主要包含以下列
    • name:要向最终用户显示的数据项的文本表示;
    • code:数据项的整数表示;
    • type:数据项的类型;
    • position:数据项在同一类型中其他项之间相对显示的顺序。

以下实体关系 (ER) 图显示了上述表的表结构和关系。

博客数据库的实体关系图

Entity-Relation Diagram of the Blog Database

与上述 ER 图相对应的完整 SQL 语句可以在 博客演示 中找到。在我们 Yii 安装中,它们位于文件 /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql 中。

信息:我们将所有表名和列名都命名为小写。这是因为不同的 DBMS 通常对大小写敏感的处理方式不同,我们希望避免此类问题。

我们还为所有表添加 tbl_ 前缀。这有两个目的。首先,前缀为这些表引入了一个命名空间,以防它们需要与同一数据库中的其他表共存,这种情况在共享主机环境中很常见,因为多个应用程序使用单个数据库。其次,使用表前缀降低了某些表名是 DBMS 中保留关键字的可能性。

我们将博客应用程序的开发划分为以下几个里程碑。

  • 里程碑 1:创建博客系统的原型。它应该包含大多数必需的功能。
  • 里程碑 2:完成文章管理。包括创建、列出、显示、更新和删除文章。
  • 里程碑 3:完成评论管理。包括创建、列出、批准、更新和删除文章评论。
  • 里程碑 4:实现小部件。包括用户菜单、登录、标签云和最新评论小部件。
  • 里程碑 5:最终调整和部署。

发现拼写错误或您认为此页面需要改进?
在 github 上编辑它 !