避免Prolog中的数据冗余

时间:2014-10-23 12:30:31

标签: prolog

我正在修改Prolog并遇到了以下问题。 假设我想创建一个关于大学课程的小知识库。 我需要以下两种关系方案:

relation scheme for lecturer: lecturer(Name,Surname)
relation scheme for course:   course(Topic,Lecturer,Date,Location).

我有一位讲师John Doe:

lecturer(doe,john).

John Doe教授复杂性课程:

course(complexity,lecturer(doe,john),monday,roomA).

现在我的信息冗余 - 不好! 有没有办法实现这样的目标:

l1 = lecturer(doe,john).

course(complexity,l1,monday,roomA).

非常感谢提前!

1 个答案:

答案 0 :(得分:3)

与数据库中相同的归一化可能性适用:

id_firstname_surname(1, john, doe).

course_day_room_lecturer(complexity, monday 'A', 1).

也就是说,我们为每位讲师引入了一个唯一的ID,并用它来引用该人。