我目前正在开发一个系统,该系统可以自动对数据库课程中学生提交的内容进行评分。他们的一项任务是创建一个关系模型,其形式为
<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中描述的问题与我相关。
我很想听听您对此主题的方法或意见。是否最好只接受具有独特足迹的表格并将其余部分留给手动评分?我是否错过了接受所有可能模式的合法方式?
谢谢!