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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2915661.html
Copyright © 2011-2022 走看看