【自然框架】CMS之数据库设计

 

 

  在园子里也混了三年多,随笔200多,一开始只是想把自己的经验写一下,后来呢弄出来了一个“自然框架”,主要精力就放在了介绍自然框架的思路上面了。随笔多了就发现一个问题:有点乱。虽然博客有分组,但是只支持一级分组,不支持n级的。博客里也没有“栏目”这一类的设置。所以对于随笔的管理有有点力不从心了。有些兄弟看到我的博客,看到我说自然框架,然后就会很迷茫,自然框架到底是什么?能做什么?如果想看看的话,从什么地方开始看,按照什么顺序来看?

 

  博客的这种形式就不大好解决这种需求了,当然也许是我对博客还不了解,没有用好吧。所以我想做一个网站,这个网站专门介绍自然框架。一开始只想做一个静态的,内容也不多嘛,做几个页面,介绍一下,把博客里的随笔整理一下做个目录便于阅读。但是试了一下才发现,静态页面好麻烦呀,也许是我太懒了吧,总是想简单一些。于是就想做一个简单的CMS,然后用这个CMS来做自然框架的介绍网站。

 

  您可能会说了,海洋又在重复制造轮子了,网上有一大堆现成的,有很多成熟的不去用,自己写什么呀?

 

  首先呢,我是程序员(嘿嘿),我先想到的是我自己能不能做出来?别人能做我为什么不行?我不是顾客,我也不是有钱人,到处去弄现成的。其次呢,做一个CMS也是一个练手的机会,同时也是自然框架的一个Demo,比较大的、完整的Demo。借此来说明自然框架的使用方式,和在网页里的作用。最后就是想借此说一下我的设计数据库的思路。我觉得我的设计数据库的思路还是有点特色的。

 

  好了,开始进入正题。

 

  首先是了解需求。一个网站会有什么?首页、新闻(图文形式的信息)、产品介绍、文件下载、图片浏览、在线视频等。这些都算是“内容”的几种形式吧,当然还可以有其他的形式。

 

  这个需求比较简单,也比较简陋,暂时就以这个需求来进行设计吧。如果是按照面向对象的方式要如何设计呢?这个我不太清楚,也许是要画一个UML吧,也许要建模。尝试一下,画了一个UML不知道对不对,拿出来请大家批批。

 

【CMS的类图】

 

 

  图很简单也没什么具体的属性,因为需求是变化的,现在也没有太具体的需求,所以属性就先设置几个主要的。另外俺英文不好,怕查出来的英文单词不正确产生歧义,所以直接用汉字了。可能您看着很别扭,但是至少不会产生什么歧义,理解起来也会比较容易吧,呵呵。

 

  “内容”作为父类,其他的作为子类。内容是一种“抽象”,把各种形式的内容的共同部分提炼出来,比如标题、内容、添加人、添加日期、点击量等。子类负责各自特有的属性。

 

  我觉得这种提炼的方式比较好,在设计数据库表结构的时候可以借鉴一下。于是就有了这样的数据库设计。

【CMS ER图】

 

  “内容”作为主体和中心,其他的都是为了这个中心(内容)来服务的。左面是对内容的限制,栏目相当于大分类,分类就是小分类(可以是n级的),类型就是内容的形式,比如图文、下载、视频、图片等。右面是扩展。扩展和类型是一一对应的。

 

  这就形成了一个“骨架”,骨架是以“内容”为中心,ArticleID作为关联字段,可以增加扩展表,但是都要以ArticleID作为关联字段。至于有多少扩展表,那就可以根据实际需求来变化,表里的字段也是可以根据需求来增减。

 

  设置这种“骨架”的好处:虽然扩展表、字段会有变化,但是“骨架”结构是不变的。这样一是可以让结构清晰,抓住中心、重点;二是当需求变化的时候,对结构的影响降到最低;三是,如果对于这种“骨架”习惯、掌握了之后,在看到其他项目的设计就会很容易进入和读懂。关于第三点,以后大家就会理解的。

 

  基本思路就是这样,抛砖引玉了。
 

 

ps:CMS的字段说明

 

表编号 字段编号 字段名 中文名 类型 大小 默认值 允许空 说明
5000 0 CMS_Channel 网站栏目          
5000 10 ChannelID 主键 int 4 1 0 主键,自增
5000 20 channelName 栏目名称 nvarchar 30 _ 0 栏目名称
5000 30 Sort 排序 int 4 10 0 小号在前
5000 40 URL 栏目的网址 nvarchar 50 _ 0 新闻内容
 
 
5005 0 CMS_ArticleClass 内容的n级分组          
5005 10 ClassID 主键 int 4 1 0 主键,自增
5005 20 ChannelID 所属栏目 int 4 0 所属栏目
5005 30 Class 文章分类 nvarchar 30 0 支持n级分类,也可以不分类
5005 40 ParentID 父ID int 4 0 以备n级分类
 
 
5010 0 CMS_Article 网站里的内容          
5010 10 ArticleID 主键 int 4 1 0 主键,自增
5010 30 ChannelID 所属栏目 int 4 1 0 所属栏目
5010 40 ClassID 分类 int 4 0 0 支持n级分类,也可以不分类
5010 50 TypeID 类型 int 4 0 0 1:新闻;2:下载;3:其他待定
5010 20 Title 标题 nvarchar 30 0 内容的标题
5010 60 Summary 简介 nvarchar 30 0 内容的概要介绍
5010 70 Content 内容 ntext 16 0 图文内容
5010 80 Hits 人气 int 4 0 点击量
5010 90 SearchText 搜索 ntext 16 0 搜索内容
5010 100 AddedDate 添加日期 smalldatetime 4 GetDate() 0 记录添加日期
5010 110 AddedPersonID 添加人 int 4 1 0 添加人
5010 120 UpdatedDate 最后修改日期 smalldatetime 4 GetDate() 0 记录最后修改日期
5010 130 UpdatedPersonID 最后修改人 int 4 1 0 记录哪个人最后修改的
 
 
 
5020 0 CMS_DownLoad 下载          
5020 10 DownLoadID 主键 int 4 1 0 主键,自增
5020 20 ArticleID 内容ID int 4 1 0 关联 “内容”表
5020 30 Title 标题 nvarchar 30 0 下载的说明,比如“本地下载”、“博客园下载”
5020 40 DownURL 下载地址 nvarchar 30 0 下载地址,可以是文件地址也可以是网页地址
5020 50 DownCount 下载次数 int 4 1 0 下载/访问次数
5020 60 AddedDate 上传时间 smalldatetime 4 GetDate() 0 上传文件的时间
5020 70 Version 版本 nvarchar 30 0 文件的版本
时间: 2024-08-01 09:50:18

【自然框架】CMS之数据库设计的相关文章

【自然框架】之通用权限:数据库设计的几种使用方式

        上次<[自然框架]之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图 >里说了一大堆的表,好多人说太复杂了,做到权限到模块就可以了.       这个嘛,我也没有说所有的表都要一起使用呀.用哪些表那是根据情况来定的.也就是客户需求.项目需求和经验来决定了.       如果项目很简单,客户的需求也不复杂,那么做到权限到模块就可以了,大家都方便.那么这个时候"资源表组"里面就只需要用一个表就ok了,其他的表就不用了.       

【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图

      好像以前做的那个数据库设计大家都没太看懂,究其原因似乎大家都比较习惯使用PowerDesinger来设计.而我用Excel画出来的图大家看着特别别扭,而且还没有总体的图,也没有ER图,所以大家也就没有心情看了吧.呵呵.      PowerDesinger学习了一下,感谢Hayden Han 写的<PowerDesigner使用教程 -- 概念数据模型 >,通过这个文章学会了如何使用PowerDesinger来画ER图,这回画出来的应该是ER图了吧,呵呵.除了ER图,还有表关联图,

循序渐进开发WinForm项目(1) 数据库设计和项目框架的生成

在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资 料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我们每天面对的太多东西了,觉得很多都稀松平常了,即使很细微的地方,可能我们都已经 形成习惯了.反过来,如果我们切换到其他领域,如IOS.android,那么开始我们可能对里面很多设计 的规则不甚了解,开始可能也是一头雾水. 本篇想作为我的<循序渐进开发WinForm项目>系列的开篇,主要介绍数据库设计方面注

从零开始编写自己的C#框架(9)——数据库设计与创建

原文:从零开始编写自己的C#框架(9)--数据库设计与创建 对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计数据库,不然可能会产生不可控的异常.   从零开始编写自己的C#框架 数据库设计规范   文件状态: [√] 草稿 [ 

【自然框架】元数据的数据库结构的详细说明和示例(三):项目与数据库字段的关联

  [自然框架]PowerDesigner 格式的元数据的表结构 [自然框架]元数据的数据库结构的详细说明和示例(一):项目描述部分 [自然框架]元数据的数据库结构的详细说明和示例(二):数据库描述部分     1.Manage_FunListCol(列表用字段) 字段名 中文名 类型 大小 默认值 说明 FunctionID 节点ID int 4 1 外键,关联节点 ColumnID 字段ID int 4 1 外键,关联字段 Sort 排序 int 4 1 同一节点下的排序 ColWidth

【自然框架.视频】基础设置(二)下载演示程序用的数据库,和数据表结构简介

  本来想这个月做一套视频演示的,但是现在看来是做不出来了.客观原因是家里拆迁.买房子.搬家,确实有点忙:主观原因是自己还是比较懒.   虽然有客观原因,但是主要的还是主观原因.既然没做好,那就不要找理由,而要为能够做好找点方法!   今天是第二个视频-- demo用的数据库的下载,下载后附加数据库以及数据库里表(元数据.人员.角色等)的简介.   下周就要去北京了,估计视频的进度就可以加快了.大约三天一个吧.   自然框架一定会坚持下去!会一直开源,且免费!  

循序渐进开发WinForm项目(1) --数据库设计和项目框架的生成

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我们每天面对的太多东西了,觉得很多都稀松平常了,即使很细微的地方,可能我们都已经形成习惯了.反过来,如果我们切换到其他领域,如IOS.android,那么开始我们可能对里面很多设计的规则不甚了解,开始可能也是一头雾水. 本篇想作为我的<循序渐进开发WinForm项目>系列的开篇,主要介绍数据库设计方

自然框架的源代码、Demo、数据库、配置信息管理程序下载(2011.1.7更新)

  自然框架在线演示:http://demo.naturefw.com/ 目前在线演示不开放管理员账号.   自然框架的网站已经基本完成,下载就转到网站里面了,http://www.naturefw.com/down/List1.aspx 请到这里下载.   管理员的账号:admin 密码:123   登录后可以到"系统管理"--"账户管理"里面查看用户,密码都是 123 .     自然框架里的数据访问函数库的帮助文件(自然框架DataAccessLibrary帮

【自然框架】之通用权限(一):简介、数据结构

        这次要写一整套的权限方面的文章了,无论我的想法好与不好,先写出来请大家来评判.这个系列我要详细的说明我的权限的思路.想法.实现方式.代码和Demo.可能有人会说,通用是达不到的,最多只能无限接近.恩,对于我来说,能够无限接近就可以了,当然我知道如果要达到这个目标并不是一件容易的事情,有难度才有挑战,才有意思.所以我会在权限方面不断的努力,不断的无限接近通用.也请大家多多帮忙,毕竟一个人的力量是有限的.              通用权限想要写的文章目录:(这是第一章)   1.