分享
 
 
 

一步一步打造3层架构在线电影网站!(2)系统设计

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

特此说明:俺是菜鸟,虽然俺一直梦想成为老鸟,但是自己学的越多,发现自己越菜。没办法,能力有限啊。这里的这个文章其实也没有啥水平,仅仅是记录自己成长的过程,也希望能够顺便拿出来给其他和我一样的菜鸟参考,大家可以一起讨论,欢迎欢迎。所以如果您是老鸟,建议您一定要估计一下自己得时间价值,因为不小心看了我这篇文章的话,不仅仅让你反胃,还可能耽误您宝贵时间,进而谋杀您的生命。哎呀,我可担当不起。但是如果您已经看了,而且反胃厉害,吐得可怜,就不要再在我这里留下您得笔迹了。好建议我欢迎,批评我得我也接受。有些个别高手那些愤世嫉俗,不屑一顾的话就别往我这里写了,现在冬天,您外面凉快去,谢谢合作,^_^

一、 第三章 系统设计

1、 总体设计

考虑的系统整体架构的合理性和可扩展性,本系统准备采用3层架构开发,分别为数据层、商务层和表现层。

本系统前端web应用采用C#和ASP.NET开发,后端数据库为MS SQL SERVER,

视频服务器采用Real Helix Server。

2、 文件目录设计

系统根目录为coofucoo,其下本项目的目录为vod,vod下面的目录情况如下表描述:

目录名

用途

Business

存放商务层类的目录

Config

存放配置文件的目录

Configuration

存放配置类的目录,此类属于商务层

core

存放核心类的目录,此类主要用于继承

data

存放数据层类的目录

Images

存放图片的目录

Styles

存放CSS文件的目录

3、 数据库设计

(1)、 表设计

数据库名称为“vod”,共有两个表,分别为:

movies表

列名

说明

类型

大小

是否空?

movie_id

编号(主键)

int

4

No

category_id

影片类别编号

int

4

No

levell

影片评级

nvarchar

50

Yes

title

影片名

nvarchar

50

No

intro

影片介绍

text

16

Yes

uptime

影片发布时间

datetime

8

No

showtime

影片上映时间

datetime

8

Yes

viewcount

影片点击率

bigint

8

No(默认为0)

image

相关图片地址

nvarchar

100

No

address

影片观看地址

nvarchar

100

No

categories表

列名

说明

类型

大小

是否空?

category_id

分类编号(主键)

int

4

No

name

分类名称

nvarchar

50

No

category_intro

分类描述

nvarchar

100

Yes

(2)、 关系设计

表movies和categories通过字段category_id进行联系。

(3)、 存储过程设计

本系统所有数据操作都有存储过程执行,以下是存储过程设计:

movies:

存储过程名

参数

描述

GetMovies

@category_id int

返回指定类型的所有电影列表,包括电影详细内容

GetMovieDetails

@movie_id int

返回指定新闻条目的完整内容

GetMoviesByCount

返回根据点击率排序的电影题目

GetAllMovies

根据上传时间返回所有电影信息

GetHeadines

@category_id int

返回指定类型的所有电影列表,内容仅包括movie_id、title、uptime、viewcount、image

InsertMovie

@category_id int

@levell nvarchar(50)

@title nvarchar(50)

@intro text

@uptime datetime

@showtime datetime

@image nvarchar(100)

@address nvarchar(100)

OUTPUT

插入电影行。如果已经存在一个带有指定category_id、title、showtime的行,那么数据参数@ movie_id就返回-1,并且不执行任何插入操作。否则执行操作,并返回添加的movie_id

DeleteMovie

@movie_id int

删除指定ID的电影条目

UpdateMovie

@movie_id int

@category_id int

@levell nvarchar(50)

@title nvarchar(50)

@intro text

@showtime datetime

@image nvarchar(100)

@address nvarchar(100)

更新指定电影条目的所有可更改内容

AddViewcount

@movie_id int

更新指定的电影条目,使其viewcount字段加一

categories:

存储过程名

参数

描述

GetCategories

返回Categories表中所有条目内容

GetCategoryDetails

@category_id int

返回指定ID的条目完整行

GetCategoryName

返回所有分类的名称和编号

InsertCategory

@name nvarchar(50)

@category_intro nvarchar(100)

OUTPUT

插入一个新的分类,如果指定的分类名字已经存在,则返回-1,否则返回新的category_id

UpdateCategory

@category_id int

@name nvarchar(50)

@category_intro nvarchar(100)

更新由category_idategory_id指定的行的所有可更改内容

DeleteCategory

@category_id int

删除由ategory_id指定的行

以下详细提供所有存储过程源代码:

GetMovies:

CREATE PROCEDURE GetMovies

@category_id int

AS

SELECT movie_id, category_id, levell, title, intro, uptime, showtime, viewcount, image, address

FROM movies

WHERE category_id = @category_id

GO

GetMovieDetails:

CREATE PROCEDURE GetMovieDetails

@movie_id int

AS

SELECT movie_id,category_id, levell, title, intro, uptime, showtime, viewcount, image, address

FROM movies

WHERE movie_id = @movie_id

GO

GetMoviesByCount:

CREATE PROCEDURE GetMoviesByCount

AS

SELECT movie_id, title

FROM movies

order by viewcount Desc

GO

GetAllMovies:

CREATE PROCEDURE GetAllMovies

AS

SELECT movie_id, levell, title, intro, uptime, showtime, viewcount

FROM movies

order by uptime Desc

GO

GetHeadines:

CREATE PROCEDURE GetHeadines

@category_id int

AS

SELECT movie_id, title, uptime,viewcount,image

FROM movies

WHERE category_id = @category_id

ORDER BY uptime DESC

GO

InsertMovie:

CREATE PROCEDURE InsertMovie

@category_id int,

@level nvarchar(50),

@title nvarchar(50),

@intro text,

@uptime datetime,

@showtime datetime,

@image nvarchar(100),

@address nvarchar(100),

@movie_id int OUTPUT

AS

DECLARE @CurrID int

-- see if the news already exists

SELECT @CurrID = movie_id

FROM movies

WHERE category_id = @category_id AND title = @title AND showtime = @showtime

-- if not, add it

IF @CurrID IS NULL

BEGIN

INSERT INTO movies

(category_id, levell, title, intro, uptime, showtime, image, address)

VALUES (@category_id, @level, @title, @intro, @uptime, @showtime, @image, @address)

SET @movie_id = @@IDENTITY

IF @@ERROR > 0

BEGIN

RAISERROR ('Insert of movies failed', 16, 1)

RETURN 99

END

END

ELSE

BEGIN

SET @movie_id = -1

END

GO

DeleteMovie:

CREATE PROCEDURE DeleteMovie

@movie_id int

AS

DELETE FROM movies

WHERE movie_id = @movie_id

GO

UpdateMovie:

CREATE PROCEDURE UpdateMovie

@movie_id int,

@category_id int,

@levell nvarchar(50),

@title nvarchar(50),

@intro text,

@showtime datetime,

@image nvarchar(100),

@address nvarchar(100)

AS

BEGIN TRANSACTION UpdateMovie

UPDATE movies

SET

category_id=@category_id,

levell=@levell,

title= @title,

intro = @intro,

showtime = @showtime,

image = @image,

address = @address

WHERE movie_id = @movie_id

IF @@ERROR > 0

BEGIN

RAISERROR ('Update of movies failed', 16, 1)

ROLLBACK TRANSACTION UpdateMovie

RETURN 99

END

COMMIT TRANSACTION UpdateMovie

GO

AddViewcount:

CREATE PROCEDURE AddViewcount

@movie_id int

AS

BEGIN TRANSACTION AddViewcount

UPDATE movies

SET

viewcount=viewcount+1

WHERE movie_id = @movie_id

IF @@ERROR > 0

BEGIN

RAISERROR ('AddViewcount of Movies failed', 16, 1)

ROLLBACK TRANSACTION AddViewcount

RETURN 99

END

COMMIT TRANSACTION AddViewcount

GO

GetCategories:

CREATE PROCEDURE GetCategories

AS

SELECT * FROM categories

GO

GetCategoryDetails:

CREATE PROCEDURE GetCategoryDetails

@category_id int

AS

SELECT *

FROM categories

WHERE category_id = @category_id

GO

GetCategoryName:

CREATE PROCEDURE GetCategoryName

AS

SELECT name FROM categories

GO

InsertCategory:

CREATE PROCEDURE InsertCategory

@name nvarchar(50),

@category_intro nvarchar(100),

@category_id int OUTPUT

AS

DECLARE @CurrID int

-- see if the category already exists

SELECT @CurrID = category_id

FROM categories

WHERE name = @name

-- if not, add it

IF @CurrID IS NULL

BEGIN

INSERT INTO categories

(name, category_intro)

VALUES (@name, @category_intro)

SET @category_id = @@IDENTITY

IF @@ERROR > 0

BEGIN

RAISERROR ('Insert of categories failed', 16, 1)

RETURN 99

END

END

ELSE

BEGIN

SET @category_id = -1

END

GO

UpdateCategory:

CREATE PROCEDURE UpdateCategory

@category_id int,

@name nvarchar(50),

@category_intro nvarchar(100)

AS

BEGIN TRANSACTION UpdateCategory

UPDATE categories

SET name = @name, category_intro = @category_intro

WHERE category_id = @category_id

IF @@ERROR > 0

BEGIN

RAISERROR ('Update of categories failed', 16, 1)

ROLLBACK TRANSACTION UpdateCategory

RETURN 99

END

COMMIT TRANSACTION UpdateCategory

GO

DeleteCategory:

CREATE PROCEDURE DeleteCategory

@category_id int

AS

DELETE FROM categories

WHERE category_id = @category_id

GO

目录设计和数据库设计到此结束,下面就开始程序代码的编写了,

呵呵,欲知后事,且听下回分解。^_^

点击这里游览上一片文章

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有