Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ограничения для обеспечения целостности БД, на Прологе 
:(
    Опции темы
coffee88
Дата 19.12.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.12.2009

Репутация: нет
Всего: нет



Доброго времени суток! Подскажите, пожалуйста, как написать ограничение для БД на Прологе, которое находило бы ошибку, если в БД имеется две и более дублирующих записей?
Собственно, сам имеющийся код:

Код


predicates
year_1937(string, real)
year_1950(string, real)
year_1958(string, real)
measure(string, string)
production(string, real, real, real, string)
ogranicheniya(string, string)
delta_5x(string, real)
ogr(string)


clauses
year_1937("coal", 45.2).
year_1937("raw oil", 392.6).
year_1937("electricity", 30.4).
year_1937("iron ore", 601.9).
year_1937("copper", 86.7).
year_1937("sulfuric acid", 3.5).
year_1937("cement", 6.1).

year_1950("coal", 38.5).
year_1950("raw oil", 328.4).
year_1950("electricity", 44.9).
year_1950("iron ore", 825.7).
year_1950("copper", 84.7).
year_1950("sulfuric acid", 3.2).
year_1950("cement", 4.4).

year_1958("coal", 49.7).
year_1958("raw oil", 372).
year_1958("electricity", 79.9).
year_1958("iron ore", 2004).
year_1958("copper", 123.7).
year_1958("sulfuric acid", 3.8).
year_1958("cement", 14.9).

measure("coal", "mln. t").
measure("raw oil", "th. t").
measure("electricity", "mlrd. kvt-h").
measure("iron ore", "th. t").
measure("copper", "th. t").
measure("sulfuric acid", "mln. t").
measure("cement", "mln. t").

production(Name, Year1937, Year1950, Year1958, Units):- 
year_1937(Name, Year1937), 
year_1950(Name, Year1950), 
year_1958(Name, Year1958), 
measure(Name, Units).

delta_5x(Name, Res):- year_1950(Name, X1), year_1958(Name, X2), Res=X2-X1.

ogranicheniya("value not defined for year 1937", X):- not(year_1937(X, _)).
ogranicheniya("value not defined for year 1950", X):- not(year_1950(X, _)).
ogranicheniya("value not defined for year 1958", X):- not(year_1958(X, _)).
ogranicheniya("value not defined for measures", X):- not(measure(X, _)).

ogr("not unique key"):-year_1937(X, A), year_1937(Y, B), X=Y, A<>B.
ogr("not unique key"):-year_1950(X, A), year_1950(Y, B), X=Y, A<>B.
ogr("not unique key"):-year_1958(X, A), year_1958(Y, B), X=Y, A<>B.
ogr("not unique key"):-measure(X, A), measure(Y, B), X=Y, A<>B.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.