ylbtech-DatabaseDesgin:web-3g-(163)網易-郵箱-數據庫設計 |
1.A,數據庫關系圖 |
1.B,數據庫設計腳本 |
/app_Data/sql-basic.sql

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

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

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

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

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

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

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

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