浅墨小站

No mountain too high, no ocean too deep.

【开发日记】风信子PHP用户注册登录系统开发实录(一)——功能与数据库设计中遇到的坑

工欲善其事,必先利其器。首先呢,我们需要对整个工程进行一系列分析,包括功能设计、数据库设计等。

功能设计

在上一篇文章里面已经堆出了许多计划,包括近期和远期的,这次我们来重新梳理这些功能。
风信子项目采用迭代式开发,整个项目总共划分为三个阶段。

第一阶段(基础功能):
1、用户注册
2、用户登录
3、找回密码
4、用户邮箱和手机认证
5、用户间私发消息

第二阶段(UI):
1、响应式UI
2、多语言
3、Ajax
4、后台管理面板

第三阶段(高级功能):
1、向其他的项目提供API
2、用户信用积分管理
3、向其他的用户系统(如Lxnet、LIA和大籽然博客)开放OAuth
4、用户权限组的区分和管理

数据库设计

设计好数据库可以让我们在随后的编码过程中更加方便,所以花一些时间去好好设计数据库是很重要的,正所谓“磨刀不误砍柴工”嘛。
数据库设计从1月2日开始,到1月11日断断续续的设计完成。

基于安全性考虑(多谢@LF112 dalao的提醒),数据库结构不便于开放,此处就不放数据库ER图了(本来还想着详细说明一下数据库结构呢)。

那么,来说说浅墨在设计数据库的时候踩到的坑和解决方案吧:
1、Navicat添加外键保存之后全都消失了?
因为浅墨开发时的环境是 phpstudy 搭建的,而 phpstudy 的 MySQL 默认使用 MyIASM 引擎,这个引擎是不支持外键的,所以需要切换成 InnoDB 引擎,这也是许多软件都需要用 InnoDB 作为数据库默认引擎的原因吧。所以遇到同样的问题时候,不妨看看引擎是不是不支持外键。

2、添加外键保存时出现 1005 号错误 (errno: 121) ?
问题出在外键约束的名称上,外键名称是不能重复的,而且大小写不敏感。

3、添加外键保存时出现 1005 号错误 (errno: 150) ?
问题同样出在外键上,外键所连接的两个字段的大小、类型、数据库引擎必须要完全匹配,否则就会出现这个错误。

数据库设计到此结束,下一章开始进行目录树设计,然后就可以开始编码啦~

未完待续。。。

点赞
  1. LF112说道:

    LFIO请更变为LIA

    1. Romonov说道:

      已经变更,感谢提醒。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: