8
回答
现在做服务器,在数据库的地方卡住了,求帮忙
科大讯飞通用文字识别100000次/天免费使用。立即申请   
现在是这样的,我现在需要全国各个大学的数据,此外还要每个大学的专业的数据,前面那个就网上有sql文件,但涉及到每个大学的专业,就不知道怎么做最好,我自己想到了几个比较笨的方法,就是一个一个把专业插入数据库,但是感觉不可行,另外一个就是拿到大学的名字,在用来访问每个大学的服务器以此获得每个大学的专业。还有其他办法吗。。。。。求帮忙, 急啊,,,,在线等。
<无标签>
举报
superYou
发帖于3年前 8回/641阅
共有8个答案 最后回答: 3年前

能把问题明确点么,这样问你自己知道问的是什么么

各个大学的数据是个什么东西?是统计每个大学有哪些专业么?

每个大学的专业数据 这个是每个大学什么样的数据,只有名称就够了还是说专业还涉及一系列其它的表比如说课程什么的?

问完之后能从答题者的角度想一下么?像我现在什么也不知道,就知道你要“大学的数据”还有“专业的数据”。数据的粒度是怎样的?只要专业名称的和需要专业其它详细信息的数据库设计明显不会一样啊。你说一条一条插入数据感觉不行,那你是想问如何自动导入导出数据么?还有访问大学的服务器获取专业……你怎么认为这个方法会比一条条插入数据好用的?从软件本身考虑下好么?你只给软件一个大学名称,它得知道每个名称对应网址吧,难道要让它自己搜索然后网页内容分析?好,就算分析出来了,每个大学网站设计都不一样啊,你让它自己从所有链接里分析出专业的数据么?

能把需求写一下么,不同功能需求需要的数据库设计不一样啊,现在这个问题完全没法回答啊。

--- 共有 1 条评论 ---
netlibo基本的东西不过关,跟会不会开发没关系。 3年前 回复

引用来自“李三乎”的评论

能把问题明确点么,这样问你自己知道问的是什么么

各个大学的数据是个什么东西?是统计每个大学有哪些专业么?

每个大学的专业数据 这个是每个大学什么样的数据,只有名称就够了还是说专业还涉及一系列其它的表比如说课程什么的?

问完之后能从答题者的角度想一下么?像我现在什么也不知道,就知道你要“大学的数据”还有“专业的数据”。数据的粒度是怎样的?只要专业名称的和需要专业其它详细信息的数据库设计明显不会一样啊。你说一条一条插入数据感觉不行,那你是想问如何自动导入导出数据么?还有访问大学的服务器获取专业……你怎么认为这个方法会比一条条插入数据好用的?从软件本身考虑下好么?你只给软件一个大学名称,它得知道每个名称对应网址吧,难道要让它自己搜索然后网页内容分析?好,就算分析出来了,每个大学网站设计都不一样啊,你让它自己从所有链接里分析出专业的数据么?

能把需求写一下么,不同功能需求需要的数据库设计不一样啊,现在这个问题完全没法回答啊。

引用来自“superYou”的评论

不好意思,各位,我没考虑到你们看我的问题会有如此的难明,具体是这样的:

首先,我需要全国大学的资料,就是一张表,这张表里面有大学的名字,还有主键,就够了,

然后还需要另外一张专业表以上面的那张表的主键为外键,这张表呢,也只需要一个专业名字就够了,总的来说,就是全国每个大学在数据库里面都有与之对应的全部专业,这样怎么实现比较好,额,我也是正式做第二个项目吧,那位仁兄说得对,基本的可能有些忘了,不好意思,让你见笑了。

很抱歉语气不太好。最近心情比较糟糕,再者回答了很多不明确的问题,很多不明确的问题为了回答需要把所有情况说清楚,特别耗心血,然后题主补充说明发现其实想问另一个问题,之前全白回答了,所以见到你这个有点火大。

你补充之后问题还是不是很明确,我说了,需要的是你的需求,即你要为一个什么功能的软件做数据库,这个很关键,比如你要做一个单纯是显示大学及对应专业的应用,输入大学名称,显示所有这个大学有的专业,那么你的实体只有两个,一个是大学,一个是专业。然后分析它们之间的关系,像一个大学有很多个专业,但是一个专业可以属于多个大学么?初看我这个问题可能很荒谬,像计算机专业很多大学都有,一个专业当然可以属于多个大学。

那么我们如果扩展功能呢?

情况一:一个专业对应一个大学,那么这说明不同大学的专业实体不一样。当我们需要引入扩展功能,比如现在我们要对每个大学每个专业写评价,并记录,这个评价功能有很多可能(系统评价,一个大学某个专业一条评价;用户来评价的话当然是一个专业对应多条评价。前者对应一个专业推荐系统,我们系统给出评价让用户去选择,或者根据我们系统评价的内容和用户的资料推荐用户上哪个学校哪个专业;后者是一个平台系统,上线很多大学,然后不同的用户进行评价,这样是一个互动的专业选择系统。前者好处是信息比较精准,坏处是数据收集量比较大,而且需要专业人士收集客观的观点;后者好处是数据收集不需要人工,但是坏处也有不少,比如用户太少或者某专业评价太少则不客观,也存在黑某个专业的可能。跑太远了,现在回来,这里只讨论我们由系统给出的评价,即一个大学一个专业只写一条评价。那么我们需要的是一张新表,表中一个字段用来存储评价内容,一个字段存储大学专业的ID就可以了,当然要有评价的主键字段。

情况二:一个专业属于多个大学,这种其实是专业实体独立于大学实体的,即把专业抽象出来了。那么同样扩展情况一的相同功能,即要对每个大学每个专业进行一条评价,那么评价表的字段是这样的:需要评价内容、大学ID、专业ID和自己的ID。

比较两个情况,可以看到虽然之前的功能一致,但是数据库的设计有多种情况,即使对应后续扩展功能相同,得到的数据库设计也不同。(而且后续扩展功能的可能也很多)

那么在不知道将来扩展功能的情况下,应该如何设计数据库?

我看了下你对其它回答的评论,你说要完成一个类似于超级课程表的功能,我没用过那个软件,不是很清楚它的功能。现在假设你需要大学、专业和课程三个表,即现在给出三个实体:大学、专业、课程,大学跟专业有关系,关系是多对多(即一个大学有N个专业,一个专业可以属于N个大学,这里按这种情况讨论),大学跟课程有一对多关系(即一个大学有N个课程,一个课程只属于一个大学),专业跟课程有一对多关系(即一个专业有N个课程)。注意这不是最后的关系模型。根据现有模型,细化分析,其实和课程有关系的不是大学和专业,虽然这样说没有错,但是更容易理解的是一门课程属于一个[大学, 专业]这样的组合,一个[大学, 专业]组合有N个课程。这样更符合真实世界的情况。那么如何根据现在的关系模型建表呢?首先对三个实体建表,字段里不要有外键,那么我们现在三个表大致设计如下:大学(ID, 名称) 专业(ID, 名称) 课程(ID, 名称)。

现在添加外键设计,这个是使用实体模型进行数据库设计的关键。如果两个实体A和B,是一对一关系,那么在表A或者表B之一中添加对方ID字段。如果A和B是N对M的关系,那么要建一张新表名为AB(其实随便起名),这个表里两个字段,一个是A的ID,一个是B的ID,当然表里再加一个自身的ID字段也是可以的。如果A和B是一对N关系,那么要在多的那方添加一那方的ID字段外键。这是一种根据关系模型,每一步有确定结果的数据库表的算法,能够得到比较合理的表结构。当然这不是说我们只要知道实体不知道功能就可以设计也表了,因为这是需要实体关系模型作为算法的输入,即之前我们讨论的大学和专业到底是几对几的问题,之前我说了按多对多的关系,要是换一对多的关系可以发现表结构变了,那时候课程就不是同时对专业和大学组合的关系,而是单纯的课程对专业了,而几对几的问题涉及到你的需求分析,到底这个实体在你的软件定义域里是一个什么样的概念,需要进行精确分析,这样才能拿到高效、合理而且有助于将来功能扩展的表(注意,如果扩展后实体意义变了,那么之前表设计就变了,如果可以保证扩展后实体定义不变,那么现存的关系是不变的其余最多是添加表的问题。而一般要改实体定义的情况很罕见,只存在于对需求理解不透彻的情况下)。

应用介绍的算法,大学专业多对多,所以不需要改这两个表,添加新表名为大学_专业表,里面两个字段:大学ID,专业ID(或者三个字段,第三个是本关系表的ID字段)

根据之前的分析课程是和大学专业组合的多对一关系(在大学专业一对多而不是多对多模型,这是不一样的),所以要在课程的表里添加 大学_专业关系ID(若是之前没有添加现在要给大学_专业表添加ID字段)。

好了,三个实体情况的数据库设计完成,用文字描述比较复杂,实际操作会发现这是一个行之有效的算法。

之前是数据库设计的方法,现在说导数据的问题,刚刚在找到了可能适用于此情况的数据,:http://download.csdn.net/download/h270128188/6829135

刚刚下载下来看了一下,这个可能是你需要的数据,似乎是MySQL的数据库sql语句。有大学、省份、专业名称,关系都写好了,但是表设计的不是最简,有冗余,不过问题不大,如果需要导的话用SQL可以很容易导入(比如select distinct等语句,创建出view用mysql workbench导出这些数据,再导入自己的表,Navicat不同数据库的表的导入导出做的非常好,比workbench好用,主要用于Excel导入数据库,或者数据库导入另一个数据库,当然相同数据库一个导入另一个也很简单了,强烈推荐)。

好了,以上即答案,希望题主以后问题明确一些。我看到你给我之前答案的评论里有一句:这样怎么实现比较好。我就又糊涂了,因为你之前已经提出了一个表的设计方案,我不知道这个实现是指如何进行表的设计还是指如何进行数据导入又或者是从哪里找数据源。

在回答别人问题的时候我都是很尽心力的,是因为知乎上每个优秀答案的回答者都是很尽心的,像我回答这个问题打字打的手都麻了,知乎上曾经有个问题,说回答问题都消耗掉了什么(想不起来原来的表达了),有人查阅几十部文献,有人拆了车子什么的很多。(知乎日报上有很多很有意思的知识,而且一般选择的都是极为优秀的答案,建议题主看一下)希望题主以后问问题明确一些,如果不知道是否明确尝试从答题人的角度思考一下,看你给出的条件作为输入,能否得到一个答案,或者问问同学、朋友对你这个问题的感觉。第二希望题主回答别人问题的时候也能用心回答,这样才能帮助更多的人。

--- 共有 2 条评论 ---
纯洁徐好牛逼,我忍不住要跪下了 3年前 回复
南湖船老大好牛逼的答案 3年前 回复

引用来自“李三乎”的评论

能把问题明确点么,这样问你自己知道问的是什么么

各个大学的数据是个什么东西?是统计每个大学有哪些专业么?

每个大学的专业数据 这个是每个大学什么样的数据,只有名称就够了还是说专业还涉及一系列其它的表比如说课程什么的?

问完之后能从答题者的角度想一下么?像我现在什么也不知道,就知道你要“大学的数据”还有“专业的数据”。数据的粒度是怎样的?只要专业名称的和需要专业其它详细信息的数据库设计明显不会一样啊。你说一条一条插入数据感觉不行,那你是想问如何自动导入导出数据么?还有访问大学的服务器获取专业……你怎么认为这个方法会比一条条插入数据好用的?从软件本身考虑下好么?你只给软件一个大学名称,它得知道每个名称对应网址吧,难道要让它自己搜索然后网页内容分析?好,就算分析出来了,每个大学网站设计都不一样啊,你让它自己从所有链接里分析出专业的数据么?

能把需求写一下么,不同功能需求需要的数据库设计不一样啊,现在这个问题完全没法回答啊。

不好意思,各位,我没考虑到你们看我的问题会有如此的难明,具体是这样的:

首先,我需要全国大学的资料,就是一张表,这张表里面有大学的名字,还有主键,就够了,

然后还需要另外一张专业表以上面的那张表的主键为外键,这张表呢,也只需要一个专业名字就够了,总的来说,就是全国每个大学在数据库里面都有与之对应的全部专业,这样怎么实现比较好,额,我也是正式做第二个项目吧,那位仁兄说得对,基本的可能有些忘了,不好意思,让你见笑了。

每个大学的专业啊,人人网就有数据,抓取就是了
--- 共有 2 条评论 ---
南湖船老大回复 @superYou : 第三方抓取+教务系统合作+用户自行上传 3年前 回复
superYou额,我也是刚才见到一篇博客,并且下载了,但是我现在做的软件类似于超级课程表那种,那超级课程表是怎么获取大学以及专业的数据的啊? 3年前 回复
其实类似问题,如果题主能说清楚,那就说明他自己都已经明白了,也就没有疑惑了,有疑惑就肯定还是说不明白的明白
顶部