zoukankan      html  css  js  c++  java
  • web3g(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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    练手
    课余时间娱乐下
    2017-2-19,作业
    JavaScript(下)
    JavaScript(上)
    Day15:网络编程-HTTP
    小知识:静态导入
    多线程知识点:锁
    多线程知识点:同步
    Day16:反射技术
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2915661.html
Copyright © 2011-2022 走看看