微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关系模型与自动评分模板的比较

如何解决关系模型与自动评分模板的比较

我目前正在使用一个系统,该系统可以自动对学生在数据库课程中提交的内容进行评分。他们的一项任务是创建

形式的关系模型
<TableName>(<Attr1 name>:<datatype>(PK),<Attr2>:<datatype>,...,<Attr3>(FK))

(PK)...主键,(FK)...外键

解析效果很好,所有表(在txt文件中一行一行地写入)都被转换为带有属性列表的Java对象,这些属性列表包含名称,类型(普通,主要,外部)和数据类型。我还为数据类型建立了抽象,例如varchar和char,character ...以文本形式处理,并且忽略诸如int **(128)**之类的其他规范。

到目前为止,我现在遇到的问题是,我需要以相同的格式比较提交与模板的内容,并检查表是否具有相同的属性数据类型和外键“足迹”,但是所有名称(表名和属性名)可以是任意的。如果多个表具有相同的占用空间但具有不同的外键怎么办?我需要无限深地检查所有引用的表(理论上)。

到目前为止,我已经阅读了以下内容根据我的理解,关系模型不过是一张图而已。该图不一定必须是平面的(也不必是其他例外之一),因此https://en.wikipedia.org/wiki/Graph_isomorphism_problem中描述的问题对我而言很重要。

我很想听听您关于此主题方法或意见。最好只接受具有唯一足迹的表,然后将其余的表留给手动分级吗?我是否错过了接受所有可能模式的合法方法

谢谢!

解决方法

解决方案将取决于您对算法的确切期望。

如果您只是想对解决方案是否正确做出肯定回答,则可能无需研究图论。您可以将单个表的占用空间定义为每种数据类型的字段数和外键数。因此,具有3个字符属性,4个数字属性和2个外键的表将获得占位符3c4n2f。 (我假设始终总是需要一个主键。)第一步,检查每个解决方案中学生解决方案中表的数量是否正确。无论如何,您都将需要一些外键命名约定,因此,在第二步中,您将检查外键的正确性,将表按相等的覆盖区分组。应该很容易检查一下,如果几个表的占位符为3c4n2f,其中哪些表具有表A和B所需的外键。如果您没有这样的命名约定,那将是不可能的检查正确性,因为无法确定外键指向哪个表。

但是,这种方法无法帮助您评估并非100%正确的解决方案。假设一个学生只是错过了一个属性,所以表的占用量显示为3c3n2f。现在,此表将与模板中的表不匹配,并且上面的检查将得出解决方案是错误的。但是,与某些放错位置的FK相比,这可能被认为是较小的错误。为此,您提到的图论方法似乎很合适。

但是可能甚至没有解决方案。同样,它只会告诉您图形是否同构。它不会告诉错误是小小的疏忽还是根本的误解。这使我想到了问题的核心。

这是要求。您的目的是什么?我只能猜测,这减少了阅读和评估学生论文的工作量。仅告诉您“正确”或“错误”的算法可能是绝对可靠的,但它不会为您节省很多工作,因为大多数提交内容可能至少会有些小毛病,使您重新阅读并理解它们中的每一个。如果您希望算法更有用,则必须提高标准:计算的结果应该是什么。您认为可能会自动评估的次要错误是什么,因此只有少量提交可以自己评估?数据库理论无法给出答案,因为它基本上是数学,只知道是非。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。