1、字段名称不规范(例如:不要拼音英文混用)
2、必填字段设置非空(导航、时间),给默认值 :int 最好给默认值 0 (不影响业务前提下)、varchar emptystring 、创建时间 默认当前
避免使用null :会占用额外Mysql空间、查询引起索引无效、检索麻烦
3、字段类型乱用:时间就要用时间类型,不要用carchar,并且能用int 不用varchaer,能用varchaer 不用text,给字段长度要严谨
4、表冗余不合理
A、拆出导航表(一对一)
news分类表(一对一)
B、news表增加字段:(跳转链接、摘要、状态、排序、SEO、创建人、创建时间、更新时间)
跳转链接:引用第三方的文章可直接跳转、不用发布文章
摘要:文章列表页、客户会一般都要求显示标题跟摘要
状态、排序:用来管理文章删除、简单审核,调整显示位置 (这几个字段比较实用)
乱分析下、希望能帮到你!
设计的有啥问题?看着能实现功能了
功能是可以实现但是就是觉得不合理,跟别人的后台没法比
@独步青城: 后台好用就行,好用就合理
@刘宏玺:数据库的设计是否合理不是直接影响网站的各方面吗?所以我想提高一下设计数据库表的能力,主要想看看大神设计的设计思路
@独步青城: cms不消耗性能的
各行各业的表设计准则都有一定的差异的。主要体现在关系的处理上,还有冗余字段的处理上.
比如说按照严格的第三范式news_daohang字段就应该拆出去单独的类别表。
然后在巨量数据的情况下可能这个表会在拆分成2个表.新闻的详细会单独一个表存.又或者新闻是单独的本地文件.
没有一个什么通用的准则,只能说在行业里,在背景下,在业务有中.适合就是好用的.
比如你这个可能会有新闻的审核,会有多张图片,排序,检索等等其他业务.那加上这些业务就不一样了.
按照对象实体来划分表:
导航用一张表,
新闻列表用一张表,
图片用一张表。
再根据实体之间的关系,一对一的话,可以建立外键。一对多,和多对多的话,可以再增加一张关系表
楼上们说的都不错,多理解一下第三范式吧
是的,现在理解了,感觉容易多了
楼上已经回答很好了,把第三范式好好理解一下吧。