首页;支持;高级数据库结构[教程]

数据库表

为了创建一个能够有效存储新闻文章的灵活数据库,最好使用三表设计来允许文章和类别之间的多对多关系。这些表如下:

表名 描述
NewsArticles 用于存储每篇文章的内容
NewsCategories 用于存储新闻类别
NewsArticleCategories 链接类别到文章
NewsPhotos 用于存储新闻图片
NewsArticlePhotos 链接图片到文章

存储每篇文章的内容:

NewsArticles
字段名 描述 需要吗?
id 主键。唯一的newsItem id可通过API(参见newsItem协议参考 Y
标题 newsItem标题 Y
提取 newsItem的摘要 N
编码 字符编码系统使用如。utf - 8 Y
文本 newsItem的文本内容 Y
publishDate 文章发表日期 Y
署名 newsItem的作者 N
tweetText 特殊的140字符twitter版本的newsItem N
文章的原始来源 N
状态 文章的当前状态,如LIVE / APPROVAL / DRAFT / DELETED N
clientQuote 引用newsItem为客户端编写的文本 N
createdDate 文章创建日期 Y
lastModifiedDate 最后一次修改日期文章 Y
htmlTitle 要插入到页面元素中的文本 N
htmlMetaDescription 要插入到newsItem页面的描述元标签中的文本 N
htmlMetaKeywords 要插入newsItem页面的关键字元标记的文本 N
htmlMetaLangauge 语言选项,插入newsItem正在呈现的页面的语言元标记中 N
标签 逗号分隔的自由文本标签列表 N
优先级 优先级标志30 =高,norma = 20用于优先新闻和publishDate N
格式 文本内容的HTML或RAW格式 Y

用于存储新闻类别:

NewsCategories
字段名 描述 需要吗?
id 通过API获得的唯一类别id(参见类别协议参考 Y
CategoryName 类别的文本名称 Y

用于存储类别和文章之间的关联,例如给定的文章属于哪个类别:

NewsArticleCategories
字段名 描述 需要吗?
id 主键。自动生成一个唯一的整型 Y
newsArticleID NewsArticle表中的有效id Y
newsCategoryID newcategory表中类别的有效id。 Y

保存新闻图片:

NewsPhotos
字段名 描述 需要吗?
id 唯一的照片id可通过API(参见协议参考照片 Y
htmlAlt 出现在图像的替代文本属性中的文本 N
取向 照片的方向或纵向或横向 N
thumbnailWidth 照片的缩略图实例的宽度(以像素为单位) N
thumbnailHeight 照片的缩略图实例的像素高度 N
thumbnailURL 指向缩略图照片的源位置的URL N
largeWidth 照片的大实例的像素宽度 N
largeHeight 照片的大实例的像素高度 N
largeURL 指向大照片的源位置的URL N
hiResWidth 照片的高分辨率实例的像素宽度 N
hiResHeight 照片的高分辨率实例的像素高度 N
hiResURL 指向高分辨率照片的源位置的URL N
customWidth 照片的自定义实例的宽度(以像素为单位) N
customHeight 照片的自定义实例的像素高度 N
customURL 指向自定义照片的源位置的URL N

用于存储照片和文章之间的关联,例如哪些照片属于给定的文章:

NewsArticlePhotos
字段名 描述 需要吗?
id 主键。自动生成一个唯一的整型 Y
newsArticleID NewsArticle表中的有效id Y
newsPhotoID 新闻片表中照片的有效id。 Y

保存新闻评论:

NewsComments
字段名 描述 需要吗?
id 通过API可用的唯一注释id(参见评论协议参考 Y
文本 评论文本 Y
的名字 注释者输入的名称信息 N
位置 地理位置信息评论者已经输入 N
推迟日期 提交评论的日期/时间 Y

用于存储评论和文章之间的关联,例如哪些评论属于给定的文章:

NewsArticleComments
字段名 描述 需要吗?
id 主键。自动生成一个唯一的整型 Y
newsArticleID NewsArticle表中的有效id Y
newsCommentID NewsComments表中注释的有效id。 Y

跳转到上

创建高级数据库结构

下面是两个例子脚本可以运行分别在MySQL和SQL Server将创建一个更高级的和全面的数据库结构来保存提要数据(你可以替换所有“文本DNContentDB无论你的愿望,如果你已经有一个数据库你想使用省略的第一行脚本,并将DNContentDB的所有后续实例替换为您希望使用的数据库名称):

MySQL创建脚本

创建数据库40100默认字符集latin1 */;

DROP TABLE IF EXISTS AdvancedSampleDB. ' newcategories ';
AdvancedSampleDB创建表。“NewsCategories”(
' id ' INT(10) UNSIGNED NOT NULL,
' name ' VARCHAR(255) NOT NULL,
主键(“id”)
) ENGINE=INNODB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS AdvancedSampleDB. ' NewsArticles ';
AdvancedSampleDB创建表。“NewsArticles”(
' id ' INT(10) UNSIGNED NOT NULL,
' title ' VARCHAR(255) NOT NULL,
“提取”文本,
' encoding ' VARCHAR(45) NOT NULL,
' text ' text NOT NULL,
' publishDate ' DATETIME NOT NULL,
' byLine ' VARCHAR(255)默认NULL,
' tweetText ' VARCHAR(140)默认NULL,
' source ' VARCHAR(255)默认NULL,
' state ' VARCHAR(20) NOT NULL,
' clientQuote ' TEXT NOT NULL,
' createdDate ' DATETIME NOT NULL,
' lastModifiedDate ' DATETIME NOT NULL,
' htmlTitle ' VARCHAR(255) DEFAULT NULL,
' htmlmetdescription ' VARCHAR(255) DEFAULT NULL,
' htmlMetaKeywords ' VARCHAR(255) DEFAULT NULL,
' htmlMetaLangauge ' VARCHAR(255)默认NULL,
' tags ' VARCHAR(255)默认NULL,
' priority ' INT(10) UNSIGNED DEFAULT NULL,
' format ' VARCHAR(10) NOT NULL,
主键(“id”)
) ENGINE=INNODB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS AdvancedSampleDB. ' NewsArticleCategories ';
AdvancedSampleDB创建表。“NewsArticleCategories”(
' id ' INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
' newsCategoryID ' INT(10) UNSIGNED NOT NULL,
' newsArticleID ' INT(10) UNSIGNED NOT NULL,
主键(“id”),
关键“FK_feedcategories_1”(“newsCategoryID”),
关键“FK_feedcategories_2”(“newsArticleID”),
约束' fk_feedcategory_1 ' FOREIGN KEY (' newsCategoryID ') REFERENCES ' newsCategoryID ' (' id ') ON DELETE CASCADE ON UPDATE CASCADE,
约束' FK_feedcategories_2 ' FOREIGN KEY (' newsArticleID ') REFERENCES ' NewsArticles ' (' id ') ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB AUTO_INCREMENT=937 DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS AdvancedSampleDB. '新闻图片';
AdvancedSampleDB创建表。“NewsPhotos”(
' id ' INT(10) UNSIGNED NOT NULL,
' htmlAlt ' VARCHAR(255) DEFAULT NULL,
'方向' VARCHAR(45)默认NULL,
' thumbnailWidth ' SMALLINT(5) UNSIGNED DEFAULT NULL,
' thumbnailHeight ' SMALLINT(5) UNSIGNED DEFAULT NULL,
“thumbnailURL”文本,
' largeWidth ' SMALLINT(5) UNSIGNED DEFAULT NULL,
' largeHeight ' SMALLINT(5) UNSIGNED DEFAULT NULL,
“largeURL”文本,
' hiResWidth ' SMALLINT(5) UNSIGNED DEFAULT NULL,
' hiResHeight ' SMALLINT(5) UNSIGNED DEFAULT NULL,
“hiResURL”文本,
' customWidth ' SMALLINT(5) UNSIGNED DEFAULT NULL,
' customHeight ' SMALLINT(5) UNSIGNED DEFAULT NULL,
“customURL”文本,
主键(“id”)
) ENGINE=INNODB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS AdvancedSampleDB. ' NewsArticlePhotos ';
AdvancedSampleDB创建表。“NewsArticlePhotos”(
' id ' INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
' newsArticleID ' INT(10) UNSIGNED NOT NULL,
' newsPhotoID ' INT(10) UNSIGNED NOT NULL,
主键(“id”),
关键“FK_feedPhotos_1”(“newsPhotoID”),
关键“FK_feedPhotos_2”(“newsArticleID”),
约束' FK_feedPhotos_1 ' FOREIGN KEY (' newsPhotoID ') REFERENCES ' NewsPhotos ' (' id ') ON DELETE CASCADE ON UPDATE CASCADE
约束' FK_feedPhotos_2 ' FOREIGN KEY (' newsArticleID ') REFERENCES ' NewsArticles ' (' id ') ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB AUTO_INCREMENT=812 DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS AdvancedSampleDB. ' NewsComments ';
AdvancedSampleDB创建表。“NewsComments”(
' id ' INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
' text '文本不为空,
' name ' VARCHAR(255)默认NULL,
' location ' VARCHAR(255)默认为空,
' postDate ' DATETIME NOT NULL,
主键(“id”)
) ENGINE=INNODB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS AdvancedSampleDB. ' NewsArticleComments ';
AdvancedSampleDB创建表。“NewsArticleComments”(
' id ' INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
' newsArticleID ' INT(10) UNSIGNED NOT NULL,
' newsCommentID ' INT(10) UNSIGNED NOT NULL,
主键(“id”),
关键“FK_feedComments_1”(“newsCommentID”),
关键“FK_feedComments_2”(“newsArticleID”),
约束' FK_feedComments_1 '外键(' newsCommentID ')引用' NewsComments ' (' id ') ON DELETE CASCADE ON UPDATE CASCADE,
约束' FK_feedComments_2 ' FOREIGN KEY (' newsArticleID ') REFERENCES ' NewsArticles ' (' id ') ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1;

跳转到上

MSSQL Server 2005创建脚本

创建数据库AdvancedSampleDB;

AdvancedSampleDB.dbo创建表。“NewsCategories”(
"id" INT NOT NULL,
"name" VARCHAR(255) NOT NULL,
主键(" id ")


AdvancedSampleDB.dbo创建表。“NewsArticles”(
"id" INT NOT NULL,
" title " VARCHAR(255) NOT NULL,
“提取”文本,
"encoding" VARCHAR(45) NOT NULL,
"text" text NOT NULL,
"publishDate" DATETIME NOT NULL,
"byLine" VARCHAR(255) DEFAULT NULL,
"tweetText" VARCHAR(140) DEFAULT NULL,
"source" VARCHAR(255)默认NULL,
"state" VARCHAR(20) NOT NULL,
"clientQuote" TEXT NOT NULL,
"createdDate" DATETIME NOT NULL,
"lastModifiedDate" DATETIME NOT NULL,
"htmlTitle" VARCHAR(255) DEFAULT NULL,
" htmlmetdescription " VARCHAR(255) DEFAULT NULL,
"htmlMetaKeywords" VARCHAR(255) DEFAULT NULL,
"htmlMetaLangauge" VARCHAR(255) DEFAULT NULL,
"tags" VARCHAR(255) DEFAULT NULL,
"priority" INT DEFAULT NULL,
"format" VARCHAR(10) NOT NULL,
主键(" id ")


AdvancedSampleDB.dbo创建表。“NewsArticleCategories”(
“id”INT身份(1,1),
"newsCategoryID" INT NOT NULL,
"newsArticleID" INT NOT NULL,
主键(" id "),
约束fk_catID
外键(“newsCategoryID”)
AdvancedSampleDB.dbo引用。“NewsCategories”(id)ON DELETE CASCADE ON UPDATE CASCADE,
约束fk_feedID_cat
外键(“newsArticleID”)
AdvancedSampleDB.dbo引用。“NewsArticles”(id)ON DELETE CASCADE ON UPDATE CASCADE


AdvancedSampleDB.dbo创建表。“NewsPhotos”(
"id" INT NOT NULL,
"htmlAlt" VARCHAR(255) DEFAULT NULL,
"orientation" VARCHAR(45) DEFAULT NULL,
"thumbnailWidth" SMALLINT默认NULL,
"thumbnailHeight" SMALLINT DEFAULT NULL,
“thumbnailURL”文本,
"largeWidth" SMALLINT DEFAULT NULL,
"largeHeight" SMALLINT DEFAULT NULL,
“largeURL”文本,
"hiResWidth" SMALLINT DEFAULT NULL,
"hiResHeight" SMALLINT DEFAULT NULL,
“hiResURL”文本,
"customWidth" SMALLINT默认为NULL,
"customHeight" SMALLINT默认为NULL,
“customURL”文本,
主键(" id ")


AdvancedSampleDB.dbo创建表。“NewsArticlePhotos”(
“id”INT身份(1,1),
"newsArticleID" INT NOT NULL,
"newsPhotoID" INT NOT NULL,
主键(" id "),
约束fk_photoID
外键(“newsPhotoID”)
AdvancedSampleDB.dbo引用。“NewsPhotos”(id)ON DELETE CASCADE ON UPDATE CASCADE,
约束fk_feedID_photo
外键(“newsArticleID”)
AdvancedSampleDB.dbo引用。“NewsArticles”(id)ON DELETE CASCADE ON UPDATE CASCADE


AdvancedSampleDB.dbo创建表。“NewsComments”(
“id”INT身份(1,1),
"text" text NOT NULL,
"name" VARCHAR(255) DEFAULT NULL,
"location" VARCHAR(255)默认为空,
"postDate" DATETIME NOT NULL,
主键(" id ")


AdvancedSampleDB.dbo创建表。“NewsArticleComments”(
“id”INT身份(1,1),
"newsArticleID" INT NOT NULL,
"newsCommentid" INT NOT NULL,
主键(" id "),
约束fk_commentID
外键(“newsCommentid”)
AdvancedSampleDB.dbo引用。“NewsComments”(id)ON DELETE CASCADE ON UPDATE CASCADE,
约束fk_feedID_comm
外键(“newsArticleID”)
AdvancedSampleDB.dbo引用。“NewsArticles”(id)ON DELETE CASCADE ON UPDATE CASCADE

跳转到上