Пока не ущучил, увы.
"понятие человек" не уникально, т.е. должно представляться не константой, а переменной.
Согласен.
Понятие "человек" не уникально. Есть конкретные люди (Вася Батарейкин, Изя Бродский, Сократ, Epros ... и тп) Это множество, домен. Каждый элемент множества уникален среди других элементов.
Точно так же, есть множество городов (Загород, Клин, Москва, Афины.... и т.п)
Множество артикулов (Трусы, Носки, Майки...)
Есть множество чисел.
Это всё описывает нашу предметную область, и в этих множествах перечислены субъекты этой предметной области, то есть то, о чем о мы делаем утверждение.
Реляционному отношению соответствует предикат первого порядка.
Взять, например, предикат (Артикул, кол-во). Пара значений (Носки, 6) дает истину потому, что такая комбинация значений встретилась в какой-то событии, случившейся в предметной области. Причем эта пара значений могла встретится несколько раз в разных событиях. Точно так же могла встретилась пара (Трусы, 2). А пара значений (Носки, 7) не встретилась ни разу, поэтому такая пара дает ложь.
О каких событиях мы говорим? Об отгрузках. Они могут быть охарактеризованы предикатом (Покупатель, Адрес, Товары). Значения первых двух атрибутов определены на доменах "Люди" и Города", а значение третьего атрибутов представляет собой значение отношения, определенного на доменах "Артикул" и "Кол-во".
Возьмем 3 разные отгрузки
Код:
Покупатель: Вася Батарейкин
Адрес: Загород
Товары:
Артикул Количество
------------------------
Носки 6
Трусы 2
Код:
Покупатель: Изя Бродский
Адрес: Клин
Товары:
Артикул Количество
------------------------
Носки 6
Трусы 2
Код:
Покупатель: Сократ
Адрес: Афины
Товары:
Артикул Количество
------------------------
Носки 6
Трусы 4
майки 1
У каждой отгрузки свое значение атрибута "Товары". У первых двух отгрузок это значение совершенно одинаковые, у третьей - другое. При этом, во всех трех отгрузках есть кортеж "Носки, 6".
Значения атрибута "Товары" (а это значений отношения) в каждом случае формируется одним и тем же предикатом (Артикул, Кол-во), но истинность пар значения разная для разных отгрузок. Во всех трех отгрузках пара (Носки, 6) дает истину. В первых двух отгрузок истину даст и пара (Трусы, 2) , но в третьей эта пара даст ложь. В первых двух отгрузок истину дают два разных кортежа , в третьей - три. В каждом случае, все разные кортежи, которые дают истину, формируют табличное значение атрибута "Товары".
epros писал(а):
Потребность в логике второго порядка возникает только тогда, когда мы хотим говорить об объектах второго порядка обобщённо, т.е. как о переменных.
КМК здесь именно тот случай, когда предикат (Артикул, кол-во) в каждом случае формирует разное значение атрибута "Товары", т.е. он ведет себя как переменная.
PS
epros писал(а):
Строки не могут дублироваться только если в них обязательно включается уникальный номер (идентификатор, первичный ключ) строки. В общем случае такого требования нет.
В реляционной модели данных кортежи уникальны по определению. Поэтому логика предикатов вполне точно сопоставима реляционной модели.
В этом смысле SQL с его таблицами явно нарушает реляционную модель.