高级项目日志

本文详细介绍了邮件系统的设计过程,包括数据库表结构设计及其背后的思考逻辑,并分享了在设计过程中遇到的问题与解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1、 ^_^  ^_^  今天是项目正式开工的第一天,设计分析也就是画一些相关的UML图。 俗话说得一点都没错“万事开头难”, 忙碌了一整天但没有什么进展。  尤其使我认识到了设计并不如自己之前认为的那样是简单的, 以前具体做编码遇到困难时就会想做设计好, 做设计可以告别烦闷且沉重的体力活。

         以前也经常听前辈提起过“做软件难的不是技术”, 虽然我现在还没有深刻地体会到这点, 但是我想应该没错。 ^_^  ^_^  我自己感觉 技术 更偏向于客观性而设计则侧重主观性(当然它们是相辅相成的)。 这样子一来做设计带给我的是太多的选择性, 自然也就带来更多的不确定性。

        并未完全满足于任何过往的任何一天, 继续寻找使新一天更有意义的生活方式。 加油!

 

2、 今天开始构造 邮件系统。 先将自己的设计思乡及其中的困难做一个记录  (8月13日)

       ————数据库表的设计

--------邮件系统的实现------

--1、
x_message(     --信箱表
receiver_name varchar2--收件人名字(唯一)
sender_name   varchar2--发送人名字(唯一)
mes_title   varchar2   --消息标题
mes_content  varchar2  --消息内容
mes_time       date    --发送时间
mes_direction  number  --发送方向 0代表发消息,  1代表接收消息
mes_resource   number  --消息来源 0代表 系统消息, 1代表好友消息, 2代表陌生人消息
mes_select    number   --消息是否被选中 0代表选中  1代表未选 (用于删除)

)

--2、
x_email(   --邮件群发表 (后台)
manager_name   varchar2  --管理员名字(唯一)
receiver_email  varchar2  --根据注册用户email发送邮件 (用户通过邮件激活)
user_level   number  --在下拉框中列出所有的级别, 选择某一级别
send_type   number  --发送类别 0代表 发送给个人 1代表发送给某一级别的用户 2代表发给全体用户
send_time  date    --发送时间
email_select number  --是否被选中 (用于删除)
send_direction number --发送方向 0代表发送到站内 1代表发送到站外
email_title  varchar2  --邮件标题
email_content  类型待定 --邮件内容 (向站外发送email时支持附件、图片等)
)

   设计思想:

  A、 前台: 用户可以向外发邮件但接收外战的邮件, 而且用户向外发的邮件不被系统保存, 所以设计数据库表时只考虑用户发站内消息的情况。

          其中在收件箱对信件进行了分类,分成站内好友、陌生人、系统消息三类。关于mes_direction字段是用于查询的, 因为只有设计了这个标记值才方便进行分类查询... 

B、 后台:

        后台只提供发送邮件的功能, 发送对象分为三类: 某个特定的用户(如每个用户在注册时发送一个连接给注册用户,让用户通过点击链接来激活账号或给某个具体的用户生日祝贺等); 某个特定级别的所有用户(如给所有新手级别发送一封邮件); 给站内全体用户发送邮件。

          ——————疑问——————

    a、 后台群发邮件是否要保存(关系到是否要建x_email表)?

    b、 还有一种情况是系统发送的,系统发送的电子邮件在比较密集的情况下,比如向所有的客户群发一封新年贺信,因为电子邮件服务器都比较慢,而且不可靠,通常会把要发的邮件推送到一个数据表,叫做待发邮件表,后台跑一个异步服务,从待发邮件表里面检索要发的邮件通过SMTP发送出去,成功发送后记录转移到已发邮件表,不成功的时候,可能会再尝试几次还不成功就把记录转移到失败邮件表。
数据库的待发邮件表实际上充当了异步服务的消息队列...

            作为一个视频网站来说是否有必要这么做?

           当然, 现在还没有考虑实现的问题...  ...  加油!   ——睡觉去了...

 

——————8月14日——————————

  首先对昨晚的数据库设计做了修改, 修改情况如下:

 --邮箱系统
--15. 信箱表 (x_email)
create table x_single_email(
email_id number(5) primary key,--邮件id
receiver_id number --收件人ID
sender_id   number  --发件人ID
receiver_name varchar2(100),--收件人名字(唯一)
sender_name   varchar2(100),--发送人名字(唯一)
email_title   varchar2(100)   --消息标题
email_content  varchar2(500)  --消息内容
email_time       date,  --发送时间
email_resource   number, --消息来源 0代表 系统消息, 1代表好友消息, 2代表陌生人消息
)

--16. 邮件群发表(x_mass_email) (后台)
create table x_mass_email(
mm_id number(5) primary  key, --群发邮件id
manager_id  number,
manager_name   varchar2, --管理员名字(唯一)
receiver_email  varchar2, --根据注册用户email发送邮件 (用户通过邮件激活)
user_level_id   varchar2,--在复选框列出所有的级别, 选择某一级别,有多个以","分隔
send_type   number,  --发送类别 0代表 发送给个人  1代表发给群体用户
send_time  date,  --发送时间
send_direction number, --发送方向 0代表发送到站内 1代表发送到站外
email_title  varchar2, --邮件标题
email_content ,--邮件内容 (向站外发送email时支持附件、图片等)
fj_address varchar2  --附件地址
user_id  number  --用于关联用户表  (后来添加)
)
--25. 邮件附件表(x_email_fj)
create table x_email_fj(
accessory_id number(5) primary key,--附件id,主键increment生成
mm_id  number,--emial id  外键
accessory_name varchar2(200),--附件名
accessory_address varchar2(500)--附件保存路径
)

   花了一个晚上将今天白天项目组讨论的数据库设计文档给整理好了。  这项工作很考验耐心, 我一定要专业的态度来做好这个项目。 明天开始构造界面........

 

————————————————痛苦波折   8月17日————————————————

    今天已是17号了, 为了自己那个木块的界面我整整郁闷了三天。 中级项目的时候由于自己做的是整个后台, 我从网上copy了一个模板即用倒也不曾发现什么问题, 但是这次这个界面由于在网上没能找到适合的模板...  ....    

    第一天, 只是感觉被压力压得喘不过气来但是实际的工作又没能有什么进展, 唯一地收获便是硬盘上面多出了几十个网站模板而已。

   第二天总算是有点开窍了, 于是想从参照的视频往上直接查看其页面源代码然后再构造, 运行一下效果很差, 原因在于对于页面中掺杂的很多js/jquery代码理不清个头绪来,忙活了大半天又推到重来。

  第三天, 终于下定决心去学习一下布局方面的知识, 于是在网上找了一套有关CSS+DIV的视频教程看, 一直看到凌晨2点多看完11集。 接下来算是对CSS+DIV有所了解,然而就要自己构造出也是不可能的事情, 幸好有了这些基础再来看源文件就更容易了。 最后也因此而使自己能将页面的源代码全部肢解开来并加以理解, 最终拼凑成了一个“四不像”的网页。

     还好, 炼狱般的3天总算熬出了一点点东西,在此期间觉得自己的情商还得加强, 因为之前我曾有过多次半途放弃的念头。

     在怀疑和犹豫面对面透视我们的时候, 我们的责任呼唤我们勇敢地前行, 从而终会发觉: 真理往往都是在险而远处!

     在次项目期间一定要全力以赴, 不要胡思乱想。 不管年底是进银行或从事市场领域的工作,现在就是做技术, 没有什么比把当下的事情做到机制对个人的成长最有效果!   加油!

 

————————————————————数据库最终修改版————————————————

————————————数据库修改版————————————————————
   觉得 用户昵称  也即 用户名应该不可以修改(即系统不提供修改用户名的功能)。
原版:
      --17. 信箱表 (x_email)
create table x_single_email(
email_id number(5) primary key,--邮件id
receiver_id number, --收件人ID
sender_id   number,  --发件人ID
receiver_name varchar2(100),--收件人名字(唯一)
sender_name   varchar2(100),--发送人名字(唯一)
email_title   varchar2(100),   --消息标题
email_content  varchar2(500),  --消息内容
email_time       date,  --发送时间
email_resource   number, --消息来源 0代表 系统消息, 1代表好友消息, 2代表陌生人消息
constraint email_receive_fk foreign key(receiver_id) references x_user(userid),
constraint email_send_fk foreign key(sender_id) references x_user(userid)
)

修改成:

pure_news( --纯粹的信息表
email_id number(5) primary key,--邮件id
email_title   varchar2(100),   --消息标题
email_content  varchar2(500),  --消息内容
email_time       date,  --发送时间

)

relation_email(
relation_id number(5) primary key, --关系id
receiver_id number, --收件人ID
sender_id   number,  --发件人ID
receiver_name varchar2(100),--收件人名字(唯一)
sender_name   varchar2(100),--发送人名字(唯一)
email_resource   number, --消息来源 0代表 系统消息, 1代表好友消息, 2代表陌生人消息
read_status number  --阅读状态(0--未读, 1--已读)
)

  因为之前那样子将所有站内信的东东都存放在一个表中, 那么没有任何用户可以删除信件啦, 因为一旦删除那么则删除了整个相同的信件(这样子对于群发站内信是不可行的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值