和扩展,就必须要让一些需要长期修改的字段 进行外部连接.这样就能够极大的加强数据库中数据的健壮性和低耦合性. 注意:良好的数据库设计可能需要同时创建多个表进行一个功能的描述,虽然在数据库设计时这样 的方法比较麻烦,但是在维护和
开发中,这样会带来很多的便利.
24.3.2
数据库表的创建
创建表可以通过 SQL Server Management Studio 视图进行创建也可以通过 SQL Server Management Studio
查询使用 SQL 语句进行创建.广告模块需要创建多个表进行广告的描述,在创建表之前首先需 要创建一个 ad 数据库,数据库创建完成后就能够在数据库中创建表了.这里首先需要创建一个 ads 表, 该表用于存储广告模块中的广告信息,如图 24-4 所示.
577
图 24-4
ads 表结构
正如图 23-4 所示,其中的字段意义如下所示. id:表示广告的 ID 号,为自动增长的主键. time:用于标识广告的开始时间 endtime:用于标识广告的结束时间,当时间到达该时间后,广告将不再被呈现. name:用于标识广告的名称,这个名称在后台管理中可以进行辨认. content:作为广告的内容而存在,管理员能够在该字段进行广告内容的编写. infor:作为广告的备注而存在,管理员和管理员之间能够通过备注阅读该广告是什么广告. picture:作为图片广告的图片连接. url:作为外部连接的广告的地址,用户单击广告时能够跳转到相应的连接. title:作为广告的标题,呈现在页面之中. html: 作为广告呈现的 HTML 代码, 可以为
JavaScript 代码, 当广告为文字广告时, 将呈现 HTML. type:作为广告的类型而存在,类型没描述在 type 表中. adid:作为广告的广告 ID 而存在,用于归纳同类广告,一个页面可以呈现一种或多种类型的广 告. 上述字段描述了相应的字段在实际应用中的意义,创建表的 SQL 语句如下所示.
USE [ad] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ads]( [id] [int] IDENTITY(1,1) NOT NULL, [time] [datetime] NULL, [endtime] [datetime] NULL, [name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [content] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [infor] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [picture] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL, [url] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL, [title] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL, [html] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [type] [int] NULL, [adid] [int] NULL, CONSTRAINT [PK_ads] PRIMARY KEY CLUSTERED 578
//创建 ads 表
( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
上述代码创建了一个 ads 表用于存储广告数据, 其中的 type 字段和 adid 字段都是其他表的外键, 这 三个表一起完成整个广告模块的数据描述,type 表创建的 SQL 语句如下所示.
USE [ad] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[type](
//创建 type 表
[id] [int] IDENTITY(1,1) NOT NULL, [classname] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_type] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, ST
ATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
type 表用于描述广告的类型,而 adclass 表用于描述广告呈现的类型,这两个表是有区别的.type 主要描述的是广告的类型, 包括图片广告, 文字广告等, 是系统类型, 通常情况下是不会更改的. adclass 而 用于描述的是广告呈现时所需要的类型,例如头部广告和底部广告,这些广告通过 adclass 表进行筛选 和整合.adclass 表创建的 SQL 语句如下所示.
USE [ad] GO SET ANSI_NULLS O