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
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |