求助“知识点”的数据库设计 少用关联,大数据关联是最没有效率的一件事,你应该多了解一下NoSQL的知识 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先不讨论nosql,200万的数据对关系型数据库来说也不是很大的数量。看了你的设计,觉得在知识点栏目和内容三者关系上和你意见有些不同,暂且不说你的栏目内容表是否符合三范式设计,仅从实际出发,内容应该和知识点的关系更为密切,而且一个知识点可以对应多个内容,从生活中将就是对于同一个观点,不同的人可以发表不同的论述。而栏目仅仅是承载这些知识点的载体,与内容并无直接关系,所以把内容划入栏目内容表,貌似有点差强人意。这仅代表我个人看法,如有错误还请见谅和指正。 有现成的wiki系统,就不要开发了。何况你们的技术又那么业余。 lz所谓的“知识点”,就是NoSql所要解决的“无模式数据库”问题。用关系数据库去套,就是个麻烦死也无法让用户满意的可行性问题,用NoSql则是正好切合。 比如说有一个数据“表”叫做“知识”的,它的输入数据可能是这样:[{"关键名称":"招商银行", "关键字":["招商银行","银行"], "栏目":[{"分组名称":基本情况, "具体栏目":[...........] }] }, {"关键名称":"设备系统", "关键字":["设备管理","生产"], "台账":[{"设备编号":"0110202A", ”名称":"NP1型吹风机","厂家":"....", "状态":"良好","功率":1500,"单位":"w",...}, {"设备编号":"0382828B","名称":"XY型控制箱","状态":"运转","尺寸":100,"箱内设备":[.....}} } }]显然,这里随时加入不同的所谓“知识点”,每一个知识点内部的构造都不同。将来如果需要查询,例如需要按照“功率大于1500w”做为索引条件进行查询,仍然可以直接找到“NP1性吹风机”而跳过“招商银行”。其实“知识点”这类是cms系统或者国内的oa系统的称呼。这是没有NoSql概念的10年前的称呼。 lz所谓的“栏目、栏目内容、栏目分组”之类的,可能是基于它的研究的数据恰好是局限于一个小cms系统的缘故。然后可以举出无数种实际的无模式文档数据库的例子,比如说亚马逊的系统要展示商品,你可以动态地看到各种商品分类。做为采购人员,比如说他采购了一批吹风机,于是他就可以在采购录入单上“当时就”加入“功率”这个属性;而如果他采购的是CPU,他就可以“当时就”加入“主频”这个属性。而且一个商品如果有需要拆分的部件,还可以“当时就”录入。于是录入商品数据时,可以随意增加字段(包括做为数据表的字段),而不需要预先定义字段类型。不同的记录完全可以有截然不同的字段类型。这就是NoSql的作用。如果你有这个知识,你就不用针对什么cms做“知识点”之类设计了。你可以把整个知识体系扩展到一个新的实用的高度,随时设计出灵活性强、性能堪比亚马逊和淘宝网的“无模式”知识数据库。 low b才会为了这么个p事从头设计nosql半天wiki早上线了。。 Mediawiki其实是个好主意。你的项目栏目标的更新时间只能记录最近一次更新,但Mediawiki已经自带了历史记录的功能,参见维基百科。Mediawiki也可以给用户分配权限,可以只允许某些人修改文章(就是你说的知识点)。Mediawiki的搜索功能可能不够强,就维基百科的体验来看,应该不能搜比如网址以.com结尾的所有知识点。如果就楼主的关系数据库而言,我认为楼主的设计没有问题。楼主的设计允许一个栏目有子栏目,栏目里有内容。一个知识点通过栏目,可以用相同名称的内容。比如招商银行->基本情况->Logo,可能企业文化里也有一个Logo。 确实没有NoSql的知识。要实现的功能也比较简单,也就没想为这个去从头学一回。不过听大家一说,还真是应该学习NoSql。 如何限制输入的数字大小,欢迎讨论 winform 里面 TreeView 的问题 急求解答 dataview与 datatable的关系 通过webservice下载数据超时,怎么解决?T_T 关于做播放器的问题! Datagrid如何实现多层表头,而且要跨行和列. **网站建设完毕,庆祝!散分!** 【请教】熟悉Visual Studio Add-in (外接程序)开发的兄弟姐妹们,帮忙看看这个需求该怎么现实 c#如何批量读取xml文件? 联盟提问 C#vs2010调试功能损坏 wcf的net.tcp在公网上访问时出现操作超时问题
看了你的设计,觉得在知识点栏目和内容三者关系上和你意见有些不同,暂且不说你的栏目内容表是否符合三范式设计,仅从实际出发,内容应该和知识点的关系更为密切,而且一个知识点可以对应多个内容,从生活中将就是对于同一个观点,不同的人可以发表不同的论述。而栏目仅仅是承载这些知识点的载体,与内容并无直接关系,所以把内容划入栏目内容表,貌似有点差强人意。这仅代表我个人看法,如有错误还请见谅和指正。
lz所谓的“知识点”,就是NoSql所要解决的“无模式数据库”问题。用关系数据库去套,就是个麻烦死也无法让用户满意的可行性问题,用NoSql则是正好切合。
"关键字":["招商银行","银行"],
"栏目":[{"分组名称":基本情况,
"具体栏目":[...........]
}]
},
{"关键名称":"设备系统",
"关键字":["设备管理","生产"],
"台账":[{"设备编号":"0110202A", ”名称":"NP1型吹风机","厂家":"....", "状态":"良好","功率":1500,"单位":"w",...},
{"设备编号":"0382828B","名称":"XY型控制箱","状态":"运转","尺寸":100,"箱内设备":[.....}}
}
}
]显然,这里随时加入不同的所谓“知识点”,每一个知识点内部的构造都不同。将来如果需要查询,例如需要按照“功率大于1500w”做为索引条件进行查询,仍然可以直接找到“NP1性吹风机”而跳过“招商银行”。
其实“知识点”这类是cms系统或者国内的oa系统的称呼。这是没有NoSql概念的10年前的称呼。
如果就楼主的关系数据库而言,我认为楼主的设计没有问题。楼主的设计允许一个栏目有子栏目,栏目里有内容。一个知识点通过栏目,可以用相同名称的内容。比如招商银行->基本情况->Logo,可能企业文化里也有一个Logo。
确实没有NoSql的知识。要实现的功能也比较简单,也就没想为这个去从头学一回。
不过听大家一说,还真是应该学习NoSql。