我的网站数据库设计构思

2009年04月19日 | 作者: Fonny

研究了一下BBlog的数据库设计,给我了些启发,不过PHP程序和Flex多少还是有区别.

 

比如,php可以直接引用数据库数据,随时查询随时使用,而Flex程序要靠AMFPHP中介控制数据库,这样,很多数据解析处理工作放在了客户端.

研究BB的文档之前我还没有一个明确的思路,但是刚刚突然想到了几个关键的问题,只要针对这些特点就能设计好相对科学的数据库.

首先,Flex的内存回收机制是”无法预测”的,那么需要尽量模块化,尽量在组件内部使用相对固定的对象,和引用.也就是独立化.那么,数据库应该根据View层出现的各个组件来设计,比如:

首页需要一个计数器,计数器会单独使用一些统计数据,比如网站总浏览量,网站文章数量,今日访问数量等等,那么针对这个组件就独立设计一个计数器表,对外的联系使用外部表项目的唯一ID.这样一个相对独立的计数器组件系统就完整了,基本和其他功能脱偶.

如何构建一个适合AMFPHP结合Flex的数据库呢?

我认为,应该先勾画出View层,也就是用户界面,把各个组件的分工明确化,独立化,然后根据各个组件需要的数据库数据设计各个相对对应的数据库表.

当然,不可能完全做到一个表服务于一个组件,因为关系数据库的数据基本上都会有些联系和互相依赖.

比如,文章Product的类别名称,在Product表中仅仅保存了一个CategoryID,这样,读取Product的时候就必须搜集Category分类表中的分类名称信息.而Category表更侧重于服务ProductCategory列表这个View层的组件…

那么,如何处理这样的情况呢?

之前,我考虑直接使用文本类型保存分类信息到Product表中,避免需要读取分类表,而需要用到分类列表的时候直接发出文本类型的查询.唯一的要求就是全局使用UTF-8保存数据.

另外,对于时间的保存问题.

虽然AS3可以解析标准UNIX时间戳格式,但是很麻烦,需要用5个以上函数加在一起才能还原可读的格式…

所以我决定直接使用NOW()保存可读格式,客户端当成文本使用.而且,把创作Product时间设为NOW()之后,基本上不会再update这个数据了,而修改时间使用Mysql的另一个保存格式,自动更新每次修改Product表的时间.这样大家都不用直接操作时间这方面的东西了.可以满足基本的需要.

对于某些常量的规定,我不想用笔写下来在客户端规定,而是用数据库专门创建几个表来保存这些数据,比如:
Products如何显示的几个常量,”置顶”,”不置顶”,”展开”,”收缩”等,这样一来,甚至可以做到客户端可以自定义这些常量名称,或者修改其显示方式.

对于缓存表的作用我还没有明白,为什么需要一个缓存表呢?
好像mysql会自动排序请求,一个接一个的完成查询啊.就算是计数器也是读取一次插入一次而已.

好了,明天开始设计客户端界面组件,一切都已经准备好了,我的新网站就要开始了.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值