專題圖編號:ylbtechASPNET
1,功能描述 |
數據庫設計類型為:微博。設計模塊2個:1,用戶。2,關系(關注|被關注)。3,信息和私信息。
成員T06和T08
2,技術與環境 |
ASP.net+SQLServer
3,數據庫設計 |
數據庫關系圖
3.0, /App_Data/SQL-Basic.sql 數據庫設計
-- ============================================= -- ylb:仿布啦微博 -- url: http://bula.cn/ -- devloper:ylb,tech -- author: YuanBo -- date: 11:11 2011-06-05 -- remark:【注】現在改成3g版 -- ============================================= USE master GO -- Drop the database if it already exists IF EXISTS ( SELECT name FROM sys.databases WHERE name = N'BuLa' ) DROP DATABASE BuLa GO CREATE DATABASE BuLa GO use BuLa go -- ============================================= -- 1,用戶表 -- ============================================= create table Users ( UserID int identity(200,1) primary key, --用戶ID Username varchar(30) not null, --昵稱 Userpass varchar(30) not null, --密碼 Sex varchar(30) check(Sex='male' or Sex='female'), --性別 HeadImageUrl varchar(30) default('list_face.jpg'), --頭像Url Province varchar(30), --省份 City varchar(30), ---市 County varchar(30), --縣 Years int default(2011), --年 Months int default(2), --月 Days int default(15), --日 Signature varchar(500) --個性簽名 ) go -- ============================================= -- 2_1,關注表 -- ============================================= create table Attending ( UserID int foreign key references Users(UserID), --用戶ID【FK】 AttendingID int foreign key references Users(UserID) --用戶ID【FK】 ) go -- ============================================= -- 2_2,被關注表 -- ============================================= create table Attended ( AttendedID int foreign key references Users(UserID), --用戶ID【FK】 UserID int foreign key references Users(UserID) --用戶ID【FK】 ) go -- ============================================= -- 3,信息表 -- ============================================= create table Msg ( MsgID int identity primary key, --信息ID【PK】 Content varchar(150), --內容 HeadImageUrl varchar(150), --頭像地址 Username varchar(150), --昵稱 Pubdate datetime default(getdate()), --發布時間 UserID int foreign key references Users(UserID), --用戶ID【FK】 BaseID int default(0) --信息ID(基類)0:基類, ) go -- ============================================= -- 4,私信息表 -- ============================================= create table SiMsg ( MsgID int identity primary key, --信息ID【PK】 Content varchar(150), --內容 HeadImageUrl varchar(150), --頭像地址 Username varchar(150), --昵稱 Pubdate datetime default(getdate()), --發布時間 SendID int foreign key references Users(UserID), --發送用戶ID【FK】 JieShouID int foreign key references Users(UserID) --接收用戶ID【FK】 ) go print '數據創建成功!'
3.1, /App_Data/Select/1,Users.sql 用戶表

use BuLa go -- ============================================= -- ylb:1,對用戶表的操作 -- ============================================= go --1,注冊 --select * from Users --select Username,Userpass,Sex,Province,City from Users --insert into Users(Username,Userpass,Sex,Province,City) values() select @@identity go --2,登錄 select count(*) from Users where UserID=2000 and Userpass='123' go --3,修改個人資料[先回填,后修改] select Username,Sex,City,Years,Months,Days,Signature from Users where UserID=2000 Update Users set Username='tome' where UserID=20000 go --4,修改頭像 update Users set HeadImageUrl='' where UserID=2000 go --5,修改密碼 --a)bool=查原密碼(方法:2,登錄) --b)bool=ture:去修改;bool=false:原密碼有誤 update Users set Userpass='abc' where UserID=20000 go --6,獲取個人信息 select UserID,Username,Sex,HeadImageUrl,Years,Signature from Users where UserID=200 go --7,查自定義 select UserID,Username,HeadImageUrl from Users where UserID=200 go --8,查RepliedBula個人信息 select UserID,Username,Sex,HeadImageUrl,Province,Years from Users where UserID=200 go --9,關注數量 --9_1,我關注的人數 select COUNT(*) from Attending where UserID=201 --9_2,關注我的人數 select COUNT(*) from Attended where UserID=201 go --10,驗證昵稱是否存在 select count(*) from Users where Username='sunshine'
3.2, /App_Data/Select/2,Attend.sql 關系表
View Code

use Bula go -- ============================================= -- 2,對關注表和被關注表的操作 -- ============================================= select * from Users select * from Attending select * from Attended go --1,添加關注 ----p:200用戶關注了201用戶 --a)向關注表插入一條信息(我的視角) insert into Attending(UserID,AttendingID) values(200,201) --b)向被關注表插入一條信息(關注者的視角) insert into Attended(AttendedID,UserID) values(200,201) insert into Attending(UserID,AttendingID) values(200,202) --b)向被關注表插入一條信息(關注者的視角) insert into Attended(AttendedID,UserID) values(200,202) go --2,取消關注 --a)關注表 delete Attending where UserID=200 and AttendingID=201 --b)被關注表 delete Attended where AttendedID=200 and UserID=201 go --3,我關注的人 select UserID,Username,Sex,HeadImageUrl,Years,Signature,Province from Users where UserID in(select AttendingID from Attending where UserID=200) go --4,關注我的人 select UserID,Username,Sex,HeadImageUrl,Years,Signature,Province from Users where UserID in(select AttendedID from Attended where userID=201) go --5,關注我的人的數量統計 select COUNT(*) from Attended where UserID=201 go --6,我和別人之間的關系 select COUNT(*) from Attending where UserID=200 and AttendingID=201
3.3, /App_Data/Select/3,Msg.sql 信息表
View Code

use BuLa go -- ============================================= -- 3,對信息表的操作方法 -- ============================================= select * from Msg go --1,發布一條信息 select Content,HeadImageUrl,Username,UserID,BaseID from Msg --insert into Msg(Content,HeadImageUrl,Username,UserID,BaseID) values() go --2,查“我的布啦” select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where UserID=200 order by MsgID desc select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where UserID=200 and BaseID=0 order by MsgID desc go --3,查“布啦圈” select AttendingID from Attending where UserID=200 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where UserID in(select AttendingID from Attending where UserID=200) or UserID=200 and BaseID=0 order by MsgID desc go --4,獲取一條信息,根據msgID select Content,Pubdate from Msg where MsgID=22 go --5,獲取所有回復,根據msgID select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where BaseID=2 go --6,查詢回復的數量 select COUNT(*) from Msg where BaseID=2 go --7,查看我的發布的布啦數量 select COUNT(*) from Msg where UserID=200 and BaseID=0 select * from Msg go --8,熱門布啦(BulaSquare.aspx)【規則:當前布啦回復最多的布啦信息】 --a)分析 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID from Msg --b) select BaseID,COUNT(*) from Msg where BaseID!=0 group by BaseID --c)結論 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where MsgID in(select top 5 BaseID from Msg where BaseID!=0 and DateDiff(dd,pubdate,getdate())=0 group by BaseID) order by MsgID desc go --9,隨便看看(public.aspx) select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where BaseID=0 order by MsgID desc go --10,布啦回復(Personal/Replied.aspx) --a)我發布的布啦 select * from Msg where UserID=200 and BaseID=0 go --b)確定有回復的布啦 select * from Msg where BaseID=1 --c)結論 select * from Msg where BaseID in(select MsgID from Msg where UserID=200 and BaseID=0) --d) select * from Msg m1 inner join Msg m2 on m1.BaseID=m2.MsgID where m1.BaseID!=0 --f)總結論 select * from Msg m1 inner join Msg m2 on m1.BaseID=m2.MsgID where m1.BaseID!=0 and m2.UserID=200
3.4, /App_Data/Select/4,BulaSearching.sql 查找查詢
View Code

use BuLa go -- ============================================= -- Bula搜索操作 -- ============================================= go -- 1,Bula搜索: -- 類型:搜話題、搜昵稱、搜布啦號 -- 1_1,搜話題 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID,BaseID from Msg where Content like '%你們%' order by MsgID desc go -- 1_2,搜昵稱 select * from Users where Username like '%x%' go -- 1_3,搜布啦號 select * from Users where UserID like '%2%'
3.5, /App_Data/Select/5,Ranking.sql 排行查詢
View Code

use BuLa go -- ============================================= -- 5,排行榜 -- ============================================= go -- 1,布啦數量排行榜 -- 1_分析過程 --a, select UserID,Username,HeadImageUrl,Signature from Users --b, select top 20 UserID,COUNT(*) from Msg where BaseID=0 group by UserID order by COUNT(*) desc go --c,結果 select UserID,Username,HeadImageUrl,Signature from Users where UserID in (select top 20 UserID from Msg where BaseID=0 group by UserID order by COUNT(*) desc ) go --2,被關注排行榜 select * from Attended --a,分析 select UserID,COUNT(*) from Attended group by UserID order by COUNT(*) desc --b,結果 select top 20 UserID,Username,HeadImageUrl,Signature from Users where UserID in (select top 20 UserID from Attended group by UserID order by COUNT(*) desc ) go --3,被回復數排行榜 --a,分析 select UserID,COUNT(*) from Msg where BaseID!=0 group by UserID order by COUNT(*) desc --b,結果 select top 20 UserID,Username,HeadImageUrl,Signature from Users where UserID in (select top 20 UserID from Msg where BaseID!=0 group by UserID order by COUNT(*) desc)
3.6, /App_Data/Select/6,Bulake.sql 布啦客
View Code

use BuLa go -- ============================================= -- ylb:Bulake對布啦客推薦 -- ============================================= go --1,熱門布啦客推薦 --隨機方式推薦10位用戶 select top 10 UserID,Username,HeadImageUrl,Province from Users order by NEWID() go --2,熱門布啦客推薦(Reg2.aspx) select top 12 UserID,Username,Sex,HeadImageUrl,Signature from Users order by NEWID() go --3,熱門布啦客推薦(BulaSquare.aspx)--附加字段content select top 6 u.UserID,u.Username,u.HeadImageUrl,m.MsgID,m.Content from Users u inner join Msg m on u.UserID=m.UserID where m.BaseID=0 order by m.MsgID desc go
3.7, /App_Data/Select/7,Recommendation.sql 熱門回復查詢
View Code

use BuLa go -- ============================================= -- ylb:recomendation操作 -- ============================================= go --一、熱門回復 --1,今日回復最多的 --分析 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID from Msg --a,查今天的布啦 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID from Msg where DateDiff(dd,pubdate,getdate())=0 --b,查布啦每條布啦回帖的數量,並按降序排列 select COUNT(*),BaseID from Msg where BaseID!=0 and DateDiff(dd,pubdate,getdate())=0 group by BaseID order by COUNT(*) desc --結果 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID from Msg where DateDiff(dd,pubdate,getdate())=0 and MsgID in( select top 10 BaseID from Msg where BaseID!=0 and DateDiff(dd,pubdate,getdate())=0 group by BaseID order by COUNT(*) desc) go --2,一周回復最多的 select MsgID,Content,HeadImageUrl,Username,Pubdate,UserID from Msg where DateDiff(WEEK,pubdate,getdate())=0 and MsgID in( select top 10 BaseID from Msg where BaseID!=0 and DateDiff(WEEK,pubdate,getdate())=0 group by BaseID order by COUNT(*) desc)
3.8, /App_Data/Select/8,SiMsg.sql 私信息

use BuLa go -- ============================================= -- 4,對私信表的操作 -- ============================================= go --1,發私信 insert into SiMsg(Content,HeadImageUrl,Username,SendID,JieShouID) values('ylb給曉梅發的私信','tt','sunshine',200,201) --select MsgID,Content,HeadImageUrl,Username,Pubdate,SendID,JieShouID from SiMsg --查 go --2,收到私信 select MsgID,Content,HeadImageUrl,Username,Pubdate,SendID,JieShouID from SiMsg where JieShouID=201 go --3,發的私信 select MsgID,Content,u.HeadImageUrl,u.Username,Pubdate,JieShouID,SendID from SiMsg sm inner join Users u on sm.JieShouID=u.UserID where SendID=200 go --4,我的關注(我給關注好友發的私信) select MsgID,Content,u.HeadImageUrl,u.Username,Pubdate,SendID,JieShouID from SiMsg sm inner join Users u on sm.SendID=u.UserID where SendID=200 and JieShouID in(select AttendingID from Attending where UserID=200) go --5,刪除私信,根據MsgID delete SiMsg where MsgID=1
4,功能截圖 |
4.2, 登錄-密碼不許為空
4.3, 登錄-用戶或密碼有誤
4.4, 注冊
4.5, 注冊-動態檢查昵稱是否被占用
4.6, 我的布啦圈
4.7, 設置-修改個人資料
4.8, 設置-修改頭像
4.9, 設置-修改密碼
5,代碼分析 |
解決方案屬性圖
6,示例|講解案例下載 |
博客園講解: http://ylbtech.cnblogs.com/
百度文庫開發文檔: http://passport.baidu.com/?business&aid=6&un=ylbtech#7
![]() |
作者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 |
最終目標 |
“代碼的國際化標准示例 ylb,tech”,最大程度地規范軟件編程開發統一,優質, 高效,易學,為建設軟件強國(中國)而努力。