2014-10-23 2 views
2

Я занимаюсь 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). 

Большое спасибо заранее!

ответ

3

Та же возможность нормализации, как в базах данных применяется:

id_firstname_surname(1, john, doe).

и:

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

То есть, мы ввели уникальный идентификатор для каждого преподавателя и использование, что для обращения к человеку.

Смежные вопросы