Mơ tả chương trình

Một phần của tài liệu THIẾT KẾ VÀ HIỆN THỰC CHƯƠNG TRÌNH QUẢN LÝ QUẢNG CÁO TRÊN TRANG WEB.doc (Trang 53)

1. Phía Advertiser

Ban đầu, muốn đăng ký vào hệ thống, Advertiser sẽ vào trang chủ của site của AdMaster để chọn chức năng “SignUp”. Ngay sau đĩ sẽ cĩ một form được gởi xuống cho Advertiser để anh ta điền các thơng tin cần thiết về mình. Những thơng tin đĩ bao gồm : Tên, Mật khẩu sử dụng, tên cơng ty, tên người liên lạc, địa chỉ, số điện thoại, địa chỉ Email. Thơng tin này sẽ được lưu giữ tạm thời trong database của hệ thống, bảng lưu trữ thơng tin này là Registers.

Thơng tin sẽ nằm trong bảng Registers cho đến khi AdMaster vào hệ thống và chọn chức năng “AdNewAccount”. Khi AdMaster chọn chức năng này, những thơng tin trong bảng Registers sẽ được chuyển sang bảng Advertisers.

Thơng tin trong bảng này gồm những thơng tin đã cĩ trong bảng Register cộng thêm một số thơng tin mà AdMaster cần bổ sung cho Advertiser (phần này sẽ được trình bày chi tiết hơn trong phần sau).

Khi thơng tin của mình đã được AdMaster chấp nhận và đưa vào hệ thống, Advertiser mới cĩ quyền thao tác trên hệ thống nhờ vào Account của mình.

Thơng thường ngay sau khi Advertiser đăng ký vào hệ thống, chương trình sẽ gởi e- mail tới Advertiser báo rằng thơng tin của họ đã được cập nhật vào hệ thống. Sau đĩ sẽ diễn ra quá trình thanh tốn phí quảng cáo giữa Advertiser và AdMaster. Tuy nhiên đây là trọng tâm của đồ án nên trong chương trình sẽ khơng đề cập đến vấn đề này.

Khi Advertiser đã cĩ account riêng, họ cĩ thể thao tác trên hệ thống. Advertiser vào chương trình, tạo campaign để chứa các mục quảng cáo của mình, cung cấp các thơng tin về ad banner. Chương trình cũng cho phép advertiser xem trước ad banner của mình, theo dõi số lần xuất hiện, click-through. Xem những kết quả thống kê theo ngày giờ ad banner xuất hiện .v.v.

Nếu muốn, Advertiser cĩ thể thay đổi thơng tin về campaign hoặc ad banner. Khi Advertiser chưa ký hợp đồng (“unsigned”), họ cĩ mọi quyền sửa đổi thơng tin về campaign và ad banner của mình. Tuy nhiên khi hợp đồng đã được ký (“signed”), advertiser khơng cĩ quyền sửa đổi thơng tin đĩ nữa mà chỉ cĩ quyền xem ad banner hoặc thống kê các thơng tin liên quan.

Khi advertiser đăng ký ad banner, thơng tin của ad banner đã nằm trong hệ thống nhưng chưa chính thức trở thành ad banner được đưa ra trangg Web. Chỉ khi AdMaster log vào hệ thống và chọn chức năng “đưa banner vào nhĩm” thì ad banner lúc đĩ mới chính thức hoạt động. Tuy khơng bắt buộc nhưng thường AdMaster thực hiện điều này khi Advertiser đã ký hợp đồng.

2. Phía AdMaster

Khi AdMaster muốn sử dụng chương trình, anh ta phải thơng qua bước kiểm tra tên vào mật khẩu. Nếu tên và mật khẩu đúng, AdMaster sẽ được log vào hệ thống. Sau đĩ anh ta cĩ mọi quyền thao tác trên hệ thống này.

AdMaster cĩ thể tạo account mới Advertisers bằng hai cách : tự tạo mới hoặc thêm (Add) account đã đăng ký (register) vào trong hệ thống. Vì cĩ mọi quyền như Advertiser nên AdMaster cĩ thể tạo campaign, thêm ad banner vào hệ thống, xem ad banner và thống kê các thơng tin cĩ liên đến ad banner.

Trong chương trình phía AdMaster cĩ một giai đoạn rất quan trọng, đĩ là định dạng ad banner. Đối với một ad banner đã được đưa vào bởi advertiser, AdMaster sẽ xem xét ad banner thuộc dạng nào nằm trên đỉnh (top) hay nằm bên cạnh (side), thuộc nhĩm nào. Nếu

ad banner thuộc dạng “top” thì thuộc tính “rotation”của nĩ sẽ được định là True, ngược lại sẽ là False. Đồng thời, AdMaster sẽ tiến hành gán ad banner cho một nhĩm đã cĩ sẵn.

Một chức năng cũng rất quan trọng là AdMaster cĩ thể tạo (xố, sửa đổi) nhĩm hoặc nhĩm con, thêm (xố) ad banner vào bất kỳ nhĩm/nhĩm con nào nhằm mục đích target trên Web server.

Phần tử cơ bản nhất trong hệ thống là các ad banner quảng cáo được nhận biết bằng những BannerID. AdMaster dùng bannerID để thao tác trên các nhĩm của mình.

Trong mỗi nhĩm, chương trình cũng cung cấp khả năng xác định thuộc tính ad banner, target ad banner và gán trọng số cho ad banner. Mỗi ad banner sẽ cĩ một trọng số (từ 0 đến 100) và trọng số tổng cộng của các ad banner trong một nhĩm luơn nhỏ hơn hoặc bằng 100.

Từ những phân tích trên, ta đưa ra mơ hình của chương trình như hình vẽ dưới đây :

____________________________________________________________Chương II THIẾT KẾ CHƯƠNG TRÌNH

I. Cơ sở dữ liệu :

1.Tổ chức cơ sở dữ liệu

Ta sẽ tổ chức cơ sở dữ liệu như sau :

 Lưu trữ dữ liệu liên quan đến ad banner theo 4 mức :

Advertiser :

- Lưu trữ dữ liệu của advertiser trong bảng mức 1 (tên cơng ty, người liên hệ, địa chỉ...)

- Tạo chức năng thêm mới, cập nhật, và xố advertiser.

Campaign:

- Lưu trữ dữ liệu của campaign trong bảng mức 2 (tên campaign, người quản lý,..). + Tên của mỗi campaign thuộc advertiser (mức 2) cũng được chứa trong record của bảng advertiser mức 1.

- Tạo chức năng tạo mới, cập nhật, và xố campaign

Advertisements:

- Lưu trữ dữ liệu ad trong bảng mức 3 (tên ad, loại ad, đường dẫn, tổng số impression, ngày tháng, ngày bắt đầu/kết thúc. . .) (adsbygoogle = window.adsbygoogle || []).push({});

+ Tên của mỗi ads thuộc campaign (mức 3) cũng được chứa trong record của bảng campaign mức 2.

- Tạo chức năng tạo mới, cập nhật, và xố ads.

Logs:

- Lưu trữ dữ liệu log (khi ad hiện ra hay được click) trong bảng mức 4.

+ Tên của mỗi log thuộc ad (mức 4) cũng được chứa trong record của bảng Ads mức 3.

Mức 1 Advertisers Advertiser 1 Advertiser 2 Advertiser X Mức 3 Advertisements (của Campaign 1) Animated gif Ad 1 Ad X Mức 2 Campaigns (của Advertiser1) Campaign 1 Campaign 2 Campaign X Mức 4 Logs (của Animated gif)

IMP. 1 IMP.2 CLK1 CLK2 IMP 3 Log X Mức 3 Advertisements (của Campaign 1) Ad 1 Ad 2 Ad X Mức 2 Campaigns (của Advertiser 2) Campaign 1 Campaign 2 Campaign X 57

 Lưu trữ thơng tin để target (ad banner/user):

Groups : lưu trữ thơng tin của nhĩm, ID của group được chứa trong bảng Groupbanners

+ Chức năng : tạo mới, cập nhật, xố nhĩm.

GroupBanners : lưu trữ thơng tin ad banner trong nhĩm. Chứa ID của ad banner trong bảng Advertisement.

+ Chức năng : cập nhật ad banner vào nhĩm, đặt trọng số cho ad banner, loại ad banner (rotation hay static)

GroupLogs : chứa thơng tin để target user trong một nhĩm.

Chức năng : cập nhật địa chỉ IP của user, BannerID mà user thấy, ngày tháng user thấy ad banner. . .

Theo những phân tích đã nêu ở phần I, database cho chương trình như sau:

Bảng Registers : thơng tin Account tạm thời của Advertiser khi họ vừa mới đăng kí vào hệ thống.

Bảng Advertisers : thơng tin về account của Advertiser.

Bảng Groups : thơng tin về nhĩm , nhĩm con.

Bảng GroupBanners : thơng tin để target ad banner trong nhĩm.

Bảng Campaign ( ‘CP’+AccountID ) : thơng tin về campaign của Advertiser.

Bảng Advertisement (‘AD’+ AccountID) : ad banner trong campaign

Bảng Logs : ghi nhận những thơng số của ad banner để thống kê và target. Ta cĩ sơ đồ quan hệ thực thể (ERD) của database

Sau đây là các bảng mơ tả thơng tin :

Thơng tin dùng trong bảng lưu trữ tạm thời advertiser :

Bảng Registers :

TÊN FIELD KIỂU CHIỀU DÀI

NULL DEFAULT

INFO_COMPANY VARCHAR 50 V TÊNCỦACƠNGTY INFO_CONTACT_PERSON VARCHAR 50 V TÊNCỦANGƯỜILIÊNLẠC INFO_ADDRESS_1 VARCHAR 50 V ĐỊACHỈLINE 1

INFO_ADDRESS_2 VARCHAR 50 V ĐỊACHỈLINE 2

INFO_ZIP VARCHAR 10 V ZIPCODE (adsbygoogle = window.adsbygoogle || []).push({});

INFO_CITY VARCHAR 50 V THÀNHPHỐHIỆNTẠICỦAADVERTISER

INFO_PHONE_1 VARCHAR 25 V SỐĐIỆNTHOẠI 1

INFO_PHONE_2 VARCHAR 25 V SỐĐIỆNTHOẠI 2

INFO_FAX VARCHAR 25 V SỐFAX

INFO_EMAIL VARCHAR 50 ĐỊACHỈEMAIL ID INT 4 IDCỦAADVERTISER USER_NAME VARCHAR 50 TÊNLOGIN

PASSWORD VARCHAR 50 PASSWORDCỦAUSER

Thơng tin về Advertiser : Bảng Advertisers

TÊN FIELD KIỂU CHIỀ

U DÀI

DEFAULT MƠ TẢ

INFO_COMPANY VARCHA R

50 V TÊNCƠNGTY INFO_CONTACT_PERSON VARCHA

R

50 V TÊNCỦANGƯỜIILIÊNHỆ INFO_ADDRESS_1 VARCHA

R

50 V ĐỊACHỈ LIÊNLẠC 1 VỚIADVERTISER INFO_ADDRESS_2 VARCHA

R

50 V ĐỊACHỈ LIÊNLẠC 2 VỚIADVERTISER

INFO_ZIP VARCHA

R

10 V ZIPCODECỦAADVERTISER

INFO_CITY VARCHA

R

50 V THÀNHPHỐHIỆNTẠICỦAADVERTISER INFO_PHONE_1 VARCHA

R

25 V SỐPHONE 1

INFO_PHONE_2 VARCHA

R

25 V SỐPHONE 2

INFO_FAX VARCHA (adsbygoogle = window.adsbygoogle || []).push({});

R

25 V SỐFAX INFO_EMAIL VARCHA

R

50 ĐỊACHỈEMAIL

CUSTOMER_SINCE VARCHAR 4 V LÀKHÁCHHÀNGTỪ 19XX

CUSTOMER_NUMBER (PK) INT USERID

USER_NAME VARCHAR 50 LOGINNAME

PASSWORD VARCHAR 50 MẬTKHẨUCỦAADVERTISER

Thơng tin về Campaign :

Bảng Campaigns(‘CP’+Account_ID) : chứa thơng tin về một campaign của một Advertiser.

TÊN FIELD KIỂU CHIỀ

U DÀI

NUL L

DEFAULT MƠ TẢ

INFO_CAMPAIGN_TITLE VARCHAR 50 V TÊNCỦACAMPAIGN INTERN_CUSTOMER_NUMBER (FK) INT 4 SỐIDCỦAADVERTISER INFO_CAMPAIG_MANAGER VARCHAR 50 V TÊNCỦANGƯỜIQUẢNLÝ

CAMPAIGN

CAMPAIGN_NUMBER (PK) VARCHAR 50 V SỐHIỆUCỦACAMPAIGN

CAMPAIGN_CREATED INT 5 THỜIĐIỂMCAMPAIGNĐƯỢCTẠO INFO_CONTRACT DATETIME 8 V (GETDATE()) TRẠNGTHÁICỦAHỢPĐỒNG FILTER_IMPRESSIONS_MAXIMUM VARCHAR 8 V ('UNSIGNED') SỐLƯỢNGIMPRESSIONTỐIĐA FILTER_CLICKS_MAXIMUM NUMERIC 18,0 V (0) SỐLƯỢNGCLICKSTỐIĐA

Thơng tin về Advertisement (Ads):

Bảng ‘AD’+Account_ID (chứa thơng tin của ad banner thuộc campaign của Advertiser).

TÊN FIELD KIỂU CHIỀU

DÀI NUL L DEFAUL T MƠ TẢ

INFO_AD_TITLE VARCHAR 50 V TÊNCỦAAD

AD_NUMBER (PK) VARCHAR 5 SỐHIỆUCỦAAD

IMPRESSIONS_COUNTER NUMERIC 18,0 V (0) SỐLƯỢNGIMPRESSIONĐÃĐƯARA ACCOUNT_IMPRESSIONS_PAID NUMERIC 18,0 V (0) SỐLƯỢNGIMPRESSIONĐÃĐƯỢC

THANHTỐN CAMPAIGN_NUMBER (FK) INT 4 SỐHIỆUCAMPAIGN CLICKS_COUNTER NUMERIC 18,0 V (0) SỐLƯỢNGCLICKS INFO_REDIRECT_URL VARCHAR 150 V REDIRECTURL INFO_BANNER_URL VARCHAR 150 V URLCỦAADBANNER INFO_BANNER_FILE VARCHAR 100 V ADBANNERFILE INFO_ALT_TEXT VARCHAR 100 V ALTERNATIVETEXT

INFO_HTML_UNDER_BANNER VARCHAR 100 V TRANGWEBĐƯỢCREDIRECTTỚIKHI CLICK-THROUGH

INFO_START_DATE DATETIME 8 V NGÀYBẮTĐẦUQUẢNGCÁO INFO_END_DATE_END DATETIME 8 V NGÀYKỀTTHÚCQUẢNGCÁO INFO_BANNER_WIDTH INT 4 V (0) CHIỀURỘNGADBANNER INFO_BANNER_HEIGHT INT 4 V (0) CHIỀUCAOADBANNER

Thơng tin để thống kê các thơng số liên quan đến ad banner, mỗi ad banner sẽ cĩ 3 bảng logs tương ứng:

Bảng ‘Log’+BannerID+’_User’: (adsbygoogle = window.adsbygoogle || []).push({});

TÊN FIELD KIỂU CHIỀU DÀI

NULL DEFAULT

INFO_IP_ADDRESS VARCHAR 15

INTER_IMPRESSIONS NUMERIC 9 V 0

INTERN_CLICKS NUMERIC 9 V 0

Bảng ‘Log’+BannerID+’_Date’ :

TÊN FIELD KIỂU CHIỀU DÀI

NULL DEFAULT

INFO_DATE DATETIME 8

INFO_TIME SMALLINT 2 V

INTER_IMPRESSIONS NUMERIC 9 V 0

INTERN_CLICKS NUMERIC 9 V 0

Bảng ‘Log’+BannerID+’_Group’:

TÊN FIELD KIỂU CHIỀU DÀI

NULL DEFAULT

GROUP_ID INT 4

INTER_IMPRESSIONS NUMERIC 9 V 0

INTERN_CLICKS NUMERIC 9 V 0

Tổ chức ad banner theo nhĩm :

Bảng Groups : (chứa tất cả thơng tin của nhĩm/nhĩm con)

TÊN FIELD KIỂU CHIỀU DÀI

NULL DEFAULT MƠ TẢ

GROUP_ID INT 4 IDCỦAGROUP

GROUP_NAME VARCHAR 30 MAINMENU, DEFAULT, SIDEBANNERS . . .

PARENT_ID INT 4 IDCỦAGROUPCHA GROUP_LEVEL INT 4 MỨCCỦAGROUP

GROUP_ORDER VARCHAR 30 SỐMỨCTỐIĐACỦAGROUP DESCRIPTION VARCHAR 30 V (‘ ’) CHUỖIMƠTẢCHOGROUP GROUP_DEFAULT BIT 1 (1)

LEAF BIT 1 0: GROUPLÁ – CĨTHỂGÁNADBANNERCHO GROUP

1: CĨMỘTGROUPHOẶCNHIỀUGROUPCON

(KHƠNGTHỂGÁNADBANNERCHOGROUP)

Thơng tin để target ad banner theo nhĩm: (adsbygoogle = window.adsbygoogle || []).push({});

Bảng GroupBanners : (chứa tất cả thơng tin cần thiết để target cho 1 ad banner)

TÊN FIELD KIỂU CHIỀ

U DÀI NUL L DEFAUL T MƠ TẢ

GROUP_ID INT 4 IDCỦAGROUP BANNER_ID VARCHAR 15 IDCỦAADBANNER ROTATION_ENABLE BIT 1 (0) 0 : ROTATION ; 1: STATIC WEIGHT TINYINT 1 V (0) TRỌNGSỐCỦAADBANNER

- Rotation_enable: nếu là 1 thì ad banner sẽ là ad banner tĩnh. Nếu là 0 thì ad banner sẽ là ad banner động.

- Weight : mỗi ad banner sẽ cĩ một trọng số riêng, đánh số từ 0 tới 100. Trọng số của ad banner nào càng lớn thì ad banner sẽ được đưa ra trang Web nhiều hơn. Thơng tin để targer một ad banner trên Web server:

Bảng GroupLogs +’GroupID’

TÊN FIELD

KIỂU CHIỀU DÀI

NULL DEFAULT MƠ TẢ

IP_ADDRESS VARCHAR 15 ĐỊACHỈIPCỦAMÁYUSER GROUP_ID INT 4 (0) IDCỦAGROUPTƯƠNGỨNG

BANNER_ID VARCHAR 15 ID CỦA AD BANNER TRONG

GROUP

LOG_DATE DATETIME 8 V (GETDATE()) NGÀYTHÁNGGHINHẬNĐƯỢC

Các bảng campaign, advertisement và logs được tạo bằng việc gọi các Store Procedure.

2. Các STORE PROCEDURE :

a) CreateTable : tạo bảng campaign và advertisement CREATE PROCEDURE CreateTable @strID varchar(4) AS DECLARE @fn varchar (8)

Select @fn = 'CP'+@strID

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('drop table '+@fn)

DECLARE @strSQL char(255)

Select @strSQL = 'Create Table '+ @fn +'(INTERN_CUSTOMER_NUMBER int, INFO_CAMPAIGN_TITLE varchar (50) NULL ,

INFO_CAMPAIGN_MANAGER varchar (50) NULL,

INTERN_CAMPAIGN_NUMBER int IDENTITY (1, 1) NOT NULL primary key, INTERN_CAMPAIGN_CREATED datetime NULL DEFAULT (getdate()))'

Exec (@strSQL)Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_CONTRACT varchar (8)

NULL Default 'Unsigned'"

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD FILTER_IMPRESSIONS_MAXIMUM numeric NULL Default 0"

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD FILTER_CLICKS_MAXIMUM numeric NULL Default 0"

Exec (@strSQL) (adsbygoogle = window.adsbygoogle || []).push({});

Select @fn = 'AD'+@strID

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('DROP TABLE '+@fn)

Select @strSQL = 'Create Table '+ @fn +'(INTERN_AD_NUMBER varchar(15) not null primary key,INTERN_CAMPAIGN_NUMBER int NOT NULL,INFO_AD_TITLE varchar(50) )'

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INTERN_IMPRESSIONS_COUNTER numeric NULL Default 0"

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INTERN_CLICKS_COUNTER numeric NULL Default 0"

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD ACCOUNT_IMPRESSIONS_PAID numeric NULL Default 0"

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_REDIRECT_URL varchar (150) NULL" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_BANNER_URL varchar (150) NULL" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_BANNER_FILE varchar (100) NULL" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_ALT_TEXT varchar (100) NULL" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_HTML_UNDER_BANNER varchar (100) NULL"

Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_START_DATE datetime NULL" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_END_DATE datetime NULL" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_BANNER_WIDTH int NULL Default 0" Exec (@strSQL)

Select @strSQL = 'Alter Table '+ @fn + " ADD INFO_BANNER_HEIGHT int NULL Default 0" Exec (@strSQL)

b) CreateLogTable: tạo các bảng Logs

CREATE PROCEDURE CreateLogTable @strTableName varchar(13) AS

DECLARE @fn char(20) DECLARE @strSQL char(255)

/*---Date---*/

Select @fn = @strTableName + '_Date'

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('drop table '+@fn)

Select @strSQL = 'Create Table '+ @fn +'(INFO_DATE datetime NOT NULL, INFO_TIME smallint, INTERN_IMPRESSIONS numeric (10,0) DEFAULT

0,INTERN_CLICKS NUMERIC (10,0) DEFAULT 0)' Exec (@strSQL)

Select @strSQL = 'Create Index idx_DateTime on '+ @fn +' (Info_Date,Info_Time)' Exec (@strSQL)

/*---Users---*/ (adsbygoogle = window.adsbygoogle || []).push({});

Select @fn = @strTableName + '_Users'

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('drop table '+@fn)

Select @strSQL = 'Create Table '+ @fn +'(INFO_IP_ADDRESS varchar (15) NOT NULL PRIMARY KEY, INTERN_IMPRESSIONS numeric (10,0) DEFAULT 0, INTERN_CLICKS numeric (10,0) DEFAULT 0)'

Exec (@strSQL) /*---Groups---*/

Select @fn = @strTableName + '_Groups'

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('drop table '+@fn)

Select @strSQL = 'Create Table '+ @fn +'(GROUP_ID int NOT NULL PRIMARY KEY,

INTERN_IMPRESSIONS numeric (10,0) DEFAULT 0,INTERN_CLICKS NUMERIC (10,0) DEFAULT 0)'

Exec (@strSQL)

c) CreateGroupLog : tạo bảng GroupLog

Create procedure CREATEGROUPLOG @strtablename varchar(15) AS

if exists (select * from sysobjects where id = object_id(@strtablename) and sysstat & 0xf = 3) Exec ('Drop table '+@strtablename)

Declare @strsql char(255)

Select @strsql = 'Create table '+ @strtablename +'(IP_ADDRESS varchar (20) not null,BANNER_ID varchar (15) not null, PATH_INFO varchar (10) not null, LOG_DATE datetime null default (getdate()))'

Exec (@strsql)

Select @strsql = 'Create Index ip_ui on '+ @strtablename +' (ip_address,path_info)' Exec (@strsql)

d) DropTable : xố các bảng campaign và advertisement CREATE PROCEDURE DROPTABLE

@strID varchar(4)

AS

DECLARE @fn varchar (8) Select @fn = 'CP'+@strID

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('drop table '+@fn)

Select @fn = 'AD'+@strID

if exists (select * from sysobjects where id = object_id(@fn) and sysstat & 0xf = 3) Exec ('drop table '+@fn)

e) DropGroupLog : xố bảng GroupLog

Create procedure DropGroupLog @strTableName varchar(15) AS

If exists (select * from sysobjects where id = object_id(@strtablename) and sysstat & 0xf = 3) exec ('DROP TABLE'+@strtablename)

f ) DropLogTable: xố các bảng log

CREATE PROCEDURE DropLogTable @fn varchar (13) AS DECLARE @strTable char(20)

Select @strTable = @fn + '_Date'

if exists (select * from sysobjects where id = object_id(@strTable) and sysstat & 0xf = 3) Exec ('drop table '+@strTable) (adsbygoogle = window.adsbygoogle || []).push({});

Select @strTable = @fn + '_Users'

if exists (select * from sysobjects where id = object_id(@strTable) and sysstat & 0xf = 3) Exec ('drop table '+@strTable)

Select @strTable = @fn + '_Groups'

if exists (select * from sysobjects where id = object_id(@strTable) and sysstat & 0xf = 3) Exec ('drop table '+@strTable)

II. Giải thuật đưa banner quảng cáo ra trang Web

1. Giải thuật tạo ra số ngẫu nhiên :

Theo phương pháp đồng dư tuyến tính - một phương pháp tạo số ngẫu nhiên của D.Lehner, ta cĩ đoạn chương trình tạo ra N số ngẫu nhiên cho mảng A như sau:

a[0] := seed;

for i := 1 to N do a[i]:=(a[i-1]*b + 1) mod m; với ba hằng số : seed, b và m

trong thuật tốn này, để tạo số ngẫu nhiên mới, ta dùng số trước đĩ nhân với b, cộng thêm 1, và lấy phần dư trong phép chia cho m. Như vậy số nhận được luơn nằm trong đoạn từ 0 tới m -1.

Tuy nhiên, trên thực tế các số khơng thực sự ngẫu nhiên, nhưng cũng cĩ thể hữu dụng như sự xấp xỉ của các số ngẫu nhiên - các số này thường được gọi là các số giả ngẫu nhiên (pseudo-random)

Một trong những vấn đề đặt ra là việc chọn ba hằng số trên như thế nào. Trước hết, m nên lớn, cĩ thể là giá trị tối đa của một word, tuy nhiên nếu khơng cần thiết cũng khơng hồn tồn phải lớn như vậy. Thường chọn m là lũy thừa của 10 hay 2, ở đây ta chọn m. Thứ hai, b khơng quá lớn cũng khơng quá nhỏ (người ta hay chọn b cĩ ít hơn m một chữ số). Thứ ba, b là một hằng số tùy ý khơng theo một mẫu riêng nào cả, ngoại trừ nĩ nên kết thúc bởi ...x21, với x chẵn (điều này tránh được một vài sự cố cĩ thể xảy ra mà các phân tích tốn học cịn để hở).

Những quy luật nêu trên được phát triển bởi D.E.Knuth. Knuth chứng minh rằng các

Một phần của tài liệu THIẾT KẾ VÀ HIỆN THỰC CHƯƠNG TRÌNH QUẢN LÝ QUẢNG CÁO TRÊN TRANG WEB.doc (Trang 53)