Вы, кажется, без потерь разбиваете таблицу на 3 других в рамках получения дизайна 5NF.
Нормализация включает в себя без потерь декомпозицию таблицы на проекции / компоненты, которые естественное соединение возвращают к ней.
(Мы говорим, что оригинал удовлетворяет определенной JD (зависимость соединения), характеризуемой наборами столбцов компонентов. Если в естественном объединении некоторых компонентов появляются ложные (под) строки, то они просто будут в конечном итоге удалены после всех компонентов натурально сочетаются.)
Реляционное естественное соединение имеет синтаксис естественного соединения SQL. (Допустим, нет нулевых или повторяющихся строк, потому что отношения не имеют их.) Это возвращает нам исходную таблицу из ее компонентов:
select *
from table1
natural join table2
natural join table3
Мы можем написать это, используя внутреннее соединение на равенство общих столбцов:
select table1.type, table2.person, table1.owner
from table1
inner join table2
on table1.owner=table2.owner
-- relevant columns are table1.owner, table1.type, table2.person
inner join table3
on table1.type=table3.type
and table2.person=table3.person
-- relevant columns are table1.owner, table1.type, table2.person
sqlfiddle.
(SQL distinct
здесь не требуется. Это следует из того факта, что естественные объединения возвращают строки 1: 1 в определенном соответствии 1: 1 с теми, которые возвращаются реляционным уравнением и его выражением в SQL через внутреннее соединение.)