前辈哈 , 能否介绍下 oschina的表结构,还有如何设计的,还有最初设计时候需要注意什么吗?

你是错的我恒对 发布于 2013/12/18 09:35
阅读 436
收藏 2

前辈哈 , 能否介绍下 oschina的表结构,还有如何设计的,还有最初设计时候需要注意什么吗?

之后的数据库扩展有没有遇到问题啊,怎么才能有一个好的数据库表设计?整体的数据库架构额

我也想做个社区(新闻论坛等)网站,但我觉得 最重要的 就是 设计数据库,虽然业务简单,但是没有经验,想听听前辈们的经验介绍,大概能贴一下表结构吗?

还有那个帖子回复的数据库表结构是怎么设计的,别人可以引用别人的回复那里怎么设计,感觉自己设计的上有问题,我想先把帖子相关记录全取出来,然后在根据parentid建立之间逻辑关系,这里有没有好的数据库设计

加载中
0
Ryan-瑞恩
Ryan-瑞恩
直接去下载。。。。。已经分享了。
你是错的我恒对
你是错的我恒对
谢谢
0
欢乐的财神
欢乐的财神

虽然有了@红薯 的方案可以参考,但是我不建议你这么做

1、程序的设计不要从数据库入手,因为只有特简单的程序才会以此获得成功

2、应该从领域或者说建模入手,拿你说的这个“新闻论坛”类型,应该有正文,评论,作者等等的概念,然后细化到正文,应该有评价信息(顶踩之类),是否首页推荐信息,后台消息传递信息(类SNS)等等,细化到评论,应该和某作者关联,其本身就是个正文,有自己的评价(这是个循环引用,看自己的需要设计嵌套几层),当然,你提到了,评论可以有引用,这个可以是直接字面量包含在正文内容里(osc好像就是),也可以维护引用指向(方便原文改动时同步更新,但不常用),最后细化作者,积分哪,登陆信息哪,产生动态哪,丰富一下,O了,然后列出来,大约就是几个概念就几张表,表之间别整花花肠子,靠程序来实现逻辑。

可能的问题如下:

1、如果将来更新概念怎么办?

给每个表增加一个版本号字段,增加的新字段该怎么解析由版本号决定

2、如果遇到性能问题怎么办?

性能是新需求并不特殊,增加性能问题的相关概念,搞清楚领域概念,再根据概念映射到数据库

3、如果遇到扩展性问题怎么办?

以概念驱动的数据库只是数据睡觉的地方,主逻辑在程序里,你不会遇到数据库的扩展性问题

既然你全面设计这个网站,就给他全新的生命

欢乐的财神
欢乐的财神
呵呵 抱着数据库睡觉,时间久了就会腻了,到时再回来看看,也许你有新的体会
你是错的我恒对
你是错的我恒对
前辈是不是 故意愚弄我啊,我虽然入行浅,但是也是知道数据库 才是根本的,一个好的可扩展的数据库,强过任何其他,程序只是一个展现,怎么写都可以改好,而数据库,哈哈大家都懂
0
aydx84318
aydx84318

我感觉“欢乐的财神”说的很好,数据库就是数据睡觉的地方。我感觉hibernate这个名字就反应了这个问题。我认为现在的开发的主要思路还是要放在业务上,一开始就从数据库表的设计入手,我感觉不太合适。

不过数据库也是很重要的哦~  (个人愚见,欢迎拍砖)我也是新手,大家一起讨论

你是错的我恒对
你是错的我恒对
一个程序可以改1000次,没啥影响,但是数据库的更改,就涉及到老数据 转到 新数据库上的问题,所以 个人感觉 数据库是根基啊
0
你是错的我恒对
你是错的我恒对

引用来自“aydx84318”的答案

我感觉“欢乐的财神”说的很好,数据库就是数据睡觉的地方。我感觉hibernate这个名字就反应了这个问题。我认为现在的开发的主要思路还是要放在业务上,一开始就从数据库表的设计入手,我感觉不太合适。

不过数据库也是很重要的哦~  (个人愚见,欢迎拍砖)我也是新手,大家一起讨论

我对or mapping不太懂,hibernate现在更是不懂了

现在想用jdbc 或者 ibatis 来做数据操作,所以想 通过构建良好的数据库结构 来方便 数据操作

刚刚看到 网站领域化 这个词 不太懂 第一次 听说,@欢乐的财神   您说的那个 领域 建模 指的是啥啊? 能否 讲解下 或者 跟个 扫盲文章啊

0
欢乐的财神
欢乐的财神

引用来自“edit”的答案

引用来自“aydx84318”的答案

我感觉“欢乐的财神”说的很好,数据库就是数据睡觉的地方。我感觉hibernate这个名字就反应了这个问题。我认为现在的开发的主要思路还是要放在业务上,一开始就从数据库表的设计入手,我感觉不太合适。

不过数据库也是很重要的哦~  (个人愚见,欢迎拍砖)我也是新手,大家一起讨论

我对or mapping不太懂,hibernate现在更是不懂了

现在想用jdbc 或者 ibatis 来做数据操作,所以想 通过构建良好的数据库结构 来方便 数据操作

刚刚看到 网站领域化 这个词 不太懂 第一次 听说,@欢乐的财神   您说的那个 领域 建模 指的是啥啊? 能否 讲解下 或者 跟个 扫盲文章啊

简单说说啊 我只说说我的个人理解 (都是外国人搞出来的玩意, 具体的准确定义和方法,请百度:领域驱动设计(DDD))

1、业务之所以复杂是因为其互相交互的复杂,或者说更多角度,更大的灵活性

2、如果你从数据入手,那么所有的一切组织关系都要靠你这个单核的大脑承担,血肉之躯啊,兄弟!你相信我,总有你受不了的时候!

3、领域就是你考虑的这个活儿涉及几个概念,要有血有肉(有状态,有行为,有逻辑),罗列出来之后形成交互关系,排排坐,看看清晰不,顺手不,然后编写代码,搞出程序。

4、完工了!!!请注意,完工了!你肯定说没有说到数据库数据不就丢了么?

5、回到前面的观点:数据库只是数据睡觉的地方!也就是领域中各个状态睡觉的地方,把这些状态需要储存的内容(通常是概念们的属性),套成一张张表即可,没什么花花肠子好搞的,就是个大表单集合!

0
巴顿
巴顿
还是更喜欢面向数据库的开发。
返回顶部
顶部