ASP.NET:Bula,1仿布啦微博數據庫設計和網頁功能圖片


專題圖ylbtech-asp.net編號: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  用戶表
View Code
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  私信息 
View Code
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.1,  登錄

 
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

 

warn 作者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

 

最終目標

 代碼的國際化標准示例 ylb,tech”,最大程度地規范軟件編程開發統一,優質, 高效,易學,為建設軟件強國(中國)而努力。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM