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

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

一、        第三章 系统设计

1、          总体设计

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

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

视频服务器采用Real Helix Server

2、          文件目录设计

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

目录名

用途

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)、        关系设计

moviescategories通过字段category_id进行联系。

(3)、        存储过程设计

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

movies

存储过程名

参数

描述

GetMovies

@category_id int

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

GetMovieDetails

@movie_id int

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

GetMoviesByCount

 

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

GetAllMovies

 

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

GetHeadines

@category_id int

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

InsertMovie

@category_id int

@levell nvarchar50

@title nvarchar50

@intro text

@uptime datetime

@showtime datetime

@image nvarchar100

@address nvarchar100

OUTPUT

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

DeleteMovie

@movie_id int

删除指定ID的电影条目

UpdateMovie

@movie_id int

@category_id int

@levell nvarchar50

@title nvarchar50

@intro text

@showtime datetime

@image nvarchar100

@address nvarchar100

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

AddViewcount

@movie_id int

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

 

categories

存储过程名

参数

描述

GetCategories

 

返回Categories表中所有条目内容

GetCategoryDetails

@category_id int

返回指定ID的条目完整行

GetCategoryName

 

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

InsertCategory

@name nvarchar50

@category_intro nvarchar100

OUTPUT

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

UpdateCategory

@category_id int

@name nvarchar50

@category_intro nvarchar100

更新由category_id ategory_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

目录设计和数据库设计到此结束,下面就开始程序代码的编写了,
呵呵,欲知后事,且听下回分解。^_^

点击这里游览上一篇文章
点击这里游览下一篇文章

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值