web-3g-(163)網易-郵箱-數據庫設計


ylbtech-DatabaseDesgin:web-3g-(163)網易-郵箱-數據庫設計
 
1.A,數據庫關系圖

 

1.B,數據庫設計腳本

 /app_Data/sql-basic.sql

View Code
USE MASTER
go
-- =============================================
-- ylb: 3g版網易郵箱
-- url: http://m.mail.163.com/
-- devloper:ylb,tech
-- author: YuanBo
-- date: 11:11 2012-07-05
-- =============================================
IF EXISTS (SELECT * 
       FROM   master..sysdatabases 
       WHERE  name = N'_3g163EMail')
    DROP DATABASE _3g163EMail
GO

CREATE DATABASE _3g163EMail
GO

USE _3g163EMail
GO
-- =============================================
-- ylb: 1.1郵箱帳戶表
-- =============================================
create table MailUsers
(
mailUser varchar(100) primary key,    --帳號名稱【PK】
pwd varchar(100) not null,            --密碼
mobileNum varchar(100)                --手機號
)


GO
-- =============================================
-- ylb: 2,郵件
-- =============================================
create table EMail
(
eMailId int primary key identity(100,1),    --編號【PK】
[subject] varchar(200) not null,            --標題
content varchar(5000),                        --正文
sendDate datetime default(getdate()),        --發件時間|接受時間
sendMail varchar(200) not null,    --發送電子郵箱地址

toMail varchar(200) not null,    --接受電子郵箱地址
att varchar(200),        --附件地址
flagRead int default(0) check(flagRead in(0,1)),    --郵件是否被讀 0:未讀:1:已讀
flagState int, --郵件狀態 0:已發送;1:保存
mailUser varchar(100) --帳號名稱【FK】
)

GO
-- =============================================
-- ylb: 3,聯系人組
-- =============================================
create table ContactGroup
(
contactGroupId int primary key identity(10,1),    --編號【PK】
contactGroupName varchar(100) not null,            --分組名稱
mailUser varchar(100) not null                            --郵箱帳號【FK】
)
go
/*
insert into ContactGroup(contactGroupName,mailUser) values('朋友','')
insert into ContactGroup(contactGroupName,mailUser) values('同事','')
insert into ContactGroup(contactGroupName,mailUser) values('親人','')
insert into ContactGroup(contactGroupName,mailUser) values('網友','')
insert into ContactGroup(contactGroupName,mailUser) values('經常聯系人','')
insert into ContactGroup(contactGroupName,mailUser) values('','')
select @@identity

insert into ContactGroup(contactGroupName,mailUser) values('朋友','rain@163.com')

--insert into ContactGroup(contactGroupName,mailUser) ({'親人','rain@163.com'},{'同事','rain@163.com'})
--一種類似的形式
*/
go
--2,GetAll
select contactGroupId,contactGroupName from ContactGroup where mailUser='' order by contactGroupId desc


GO
-- =============================================
-- ylb: 3.2,聯系人
-- =============================================
create table Contact
(
contactId int primary key identity(100,1),        --編號【PK】
name varchar(100) not null,                --姓名
emailPref varchar(100),                                --電子郵箱
telCell varchar(100),                --電話|移動電話號
contactGroupIds varchar(100),        --聯系人分組編號【FK】
mailUser varchar(100) not null        --郵箱帳號【FK】
)
GO
-- =============================================
-- ylb: 3.3,聯系人與分組關系
-- =============================================
create table ContactGroupContact
(
contactId int not null,            --聯系人(UserMails)編號【FK】
contactGroupId int not null,    --聯系人分組編號(ContactGroup)【FK】
mailUser varchar(100) not null    --郵箱帳戶(Contact)編號【FK】
)

GO
-- =============================================
-- ylb: 4,郵件附件
-- =============================================
create table Attachments
(
attachmentId int primary key identity(1,1),    --編號【PK】
attachmentUrl varchar(200) not null,                --附件保存地址
[filename] varchar(200),                --文件名稱
filesize varchar(100),                    --文件大小
emailId int,                    --郵件編號【FK-Email】
tempId varchar(200), --臨時的保存標識【當郵箱沒保存的時候】
mailUser varchar(100) not null    --郵箱帳戶(Contact)編號【FK】
)

go
select * from MailUsers


GO
-- =============================================
-- ylb: 5,文件中心
-- =============================================
create table [File]
(
fileId int primary key identity(1,1),    --編號【PK】
[fileName] varchar(200) not null,        --文件名稱
baseId int default(0),                    --上級編號 0:無上級;
fileType int,                    --文件類型 1:文件夾;2:非文件夾
fileUrl varchar(100),                    --(非文件時)文件保存位置
fileSize int,                        --文件大小
mailUser varchar(100) not null    --郵箱帳戶(Contact)編號【FK】
)

GO
1.C,功能實現代碼

 /app_Data/select/1,MailUsers.sql

View Code
use _3g163Email
go
-- =============================================
-- ylb: 3g版網易郵箱
-- url: http://m.mail.163.com/
-- devloper:ylb,tech
-- author: YuanBo
-- date: 11:11 2012-07-05
-- =============================================
-- =============================================
-- ylb-menu: 1, 郵箱帳戶表的操作與步驟
-- =============================================

GO
-- =============================================
-- ylb: 1,用戶登錄
-- =============================================
select COUNT(*) from MailUsers where mailUser='yb@163.com' and pwd='m123456'

GO
-- =============================================
-- ylb: 2,注冊用戶
-- =============================================
--2.1,驗證“電子郵箱名稱”是否已被注冊
SELECT COUNT(*) FROM MailUsers where mailUser='yb@163.com'
--2.2,注冊郵箱
insert into MailUsers(mailUser,pwd,mobileNum) values('yb@163.com','m123456','13520698733')

 /app_Data/select/2,Email.sql

View Code
use _3g163EMail

go
-- =============================================
-- ylb: 1,發郵件
-- =============================================

select * from EMail

select subject,content,sendMail,toMail,att,flagRead,flagState,mailUser from EMail

--insert into EMail(subject,content,sendMail,toMail,att,flagRead,flagState) values()
select @@identity

go
-- =============================================
-- ylb: 2,查郵件,根據編號
-- =============================================

select eMailId,subject,content,sendDate,sendMail
,toMail,att,flagRead,flagState,mailUser from EMail
where eMailId=0

go
-- =============================================
-- ylb: 2.2,上一封|下一封
-- =============================================
-- 上一封
select top 1 * from EMail where eMailId >2 order by email asc
go
-- 下一封
select top 1 * from EMail where eMailId <2 order by email desc


go
-- =============================================
-- ylb: 2,查郵件,根據編號
-- =============================================

 /app_Data/select/3,Contact.sql

View Code
use _3g163EMail
go

select * from Contact

GO
-- =============================================
-- ylb: 1,添加一個聯系人
-- =============================================
select contactId,name,telCell,emailPref from Contact where contactId=0
go
--insert into Contact() values()
go
select contactGroupId from ContactGroupContact where contactId=0
go
--insert into ContactGroupContact(contactId,contactGroupId,mailUser) values()
GO
-- =============================================
-- ylb: 2,獲取所有聯系人
-- =============================================
select contactId,name,telCell,emailPref from Contact where mailUser='' order by contactId desc

GO
-- =============================================
-- ylb: 3,更新一個聯系人
-- =============================================
select contactId,name,telCell,emailPref from Contact where contactId=0
go
--update Contact set where contactId=0
go
--先刪除,在添加分組
delete ContactGroupContact where contactId=0
--
insert into ContactGroupContact(contactId,contactGroupId,mailUser) values()
--
GO

-- =============================================
-- ylb: 4,批量刪除聯系人
-- =============================================
delete Contact where mailUser='' and contactId in(0,0)

 /app_Data/select/3-2,Contact.sql

View Code
use _3g163EMail
go

select * from Contact

GO
-- =============================================
-- ylb: 1,添加一個聯系人
-- =============================================
select contactId,name,telCell,emailPref from Contact where contactId=0
go
--insert into Contact() values()
go
select contactGroupId from ContactGroupContact where contactId=0
go
--insert into ContactGroupContact(contactId,contactGroupId,mailUser) values()
GO
-- =============================================
-- ylb: 2,獲取所有聯系人
-- =============================================
select contactId,name,telCell,emailPref from Contact where mailUser='' order by contactId desc

GO
-- =============================================
-- ylb: 3,更新一個聯系人
-- =============================================
select contactId,name,telCell,emailPref from Contact where contactId=0
go
--update Contact set where contactId=0
go
--先刪除,在添加分組
delete ContactGroupContact where contactId=0
--
insert into ContactGroupContact(contactId,contactGroupId,mailUser) values()
--
GO

-- =============================================
-- ylb: 3,
-- =============================================
select * from ContactGroupContact

 /app_Data/select/3.2,ContactGroup.sql

View Code
use _3g163EMail
go

select cg.contactGroupId,contactGroupName,COUNT(*) 'quantity' from ContactGroup cg 
inner join ContactGroupContact cgc on cg.contactGroupId=cgc.contactGroupId

group by cg.contactGroupId,cg.contactGroupName
having cgc.mailUser=''


select contactGroupId,contactGroupName,(select COUNT(*) from ContactGroupContact cgc where cgc.contactGroupId=cg.contactGroupId) 'quantity' from ContactGroup cg
 where mailUser=@mailUser order by contactGroupId desc
 
go

select contactGroupId,contactGroupName from ContactGroup cg

select contactGroupId,COUNT(*) from ContactGroupContact

group by contactGroupId
having mailUser=''

 /app_Data/select/4,Attachments.sql

View Code
use _3g163EMail

go
-- =============================================
-- ylb: 1,添加附件
-- =============================================
select * from Attachments
insert into Attachments(attachmentUrl,[filename],filesize,emailId,mailUser,tempId) values()
select attachmentUrl,[filename],filesize,emailId,mailUser,tempId from Attachments

go
-- =============================================
-- ylb: 2,查詢附件,根據tempId
-- =============================================
select attachmentId,attachmentUrl,[filename],filesize,emailId,mailUser,tempId from Attachments where tempId=''

go
-- =============================================
-- ylb: 3,刪除一個附件
-- =============================================
delete Attachments where attachmentId=0


go
-- =============================================
-- ylb: 1,發郵件
-- =============================================

 /app_Data/select/5,File.sql

View Code
use _3g163EMail
GO
-- =============================================
-- ylb: 5,文件中心
-- =============================================

GO
--1,新建文件夾
insert into [File]([fileName],baseId,fileType,mailUser) values()

go
--1.2,上傳文件
insert into [File]([fileName],baseId,fileType,fileUrl,mailUser,fileSize) values()

go
--2,批量刪除文件
delete [File] where mailUser='rain@163.com' and fileId in(0,1)

--3,查詢文件列表

select fileId,[fileName],fileType,fileUrl from [File] where mailUser='rain@163.com' and baseId=0
order by fileId desc
go
select * from [File]

go
--4,查詢文件
select [fileName],fileUrl,fileSize from [File] where fileType=-1 and mailUser='rain@163.com' and fileId=0

go
--5,查文件夾名稱
select [fileName] from [File] where fileType=1 and mailUser='rain@163.com' and fileId=0

--6,查一個文件夾下包含的文件數(注釋:不包括文件夾數量)
--6.1,用戶包含的,網盤,只查下一層的文件數
select count(*) from [File] where fileType=-1 and mailUser='rain@163.com' and baseId=0

--6.2,遞歸去查
select count(*) from [File] where fileType=-1 and mailUser='rain@163.com' and baseId=0
warn 作者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

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



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