Чтобы повысить до 2NF, определите неключевые атрибуты, которые зависят только от части ключа-кандидата, а не от всех. Начните с определения того, зависят ли какие-либо атрибуты из набора {clientName, propertyAddress, rent, rentStart, rentFinish, ownerNo, ownerName} только от clientNo или propertyNo.
Теперь одна из проблем, с которыми вы столкнетесь в сети, заключается в том, что функциональные зависимости на самом деле определяются значениями, а не именами столбцов. Без репрезентативных значений выборки мы должны немного угадать Но, вероятно,
clientNo -> clientName
propertyNo -> propertyAddress, ownerNo, ownerName
Таким образом, мы можем разложить ClientRental таким образом.
Relation "clients" { (clientNo), clientName}
Relation "properties" { (propertyNo), propertyAddress, ownerNo, ownerName}
Relation "ClientRental" { (clientNo, propertyNo), rent, rentStart, rentFinish}
В США неправда, что недвижимость -> аренда. (Ваш FD2. Если вы не имеете в виду арендная плата , вы имеете в виду запрашиваемую цену.) В США арендная плата определяет арендную плату, и юридически в аренду должны быть включены адрес и арендатор. (На самом деле все жильцы. Но это другая проблема.)
Поскольку "client" и "properties" имеют только один столбец в ключах-кандидатах, они должны быть в 2NF. Я думаю, что все эти три отношения находятся в 2NF.
Можете ли вы справиться с улучшением до 3NF (без учета транзитивных зависимостей) самостоятельно?
Позже. , .
Да, здесь есть как минимум одна транзитивная зависимость: propertyNo -> ownerNo -> ownerName. Удалите эту переходную зависимость, введя отношение владельцев.
Relation "clients" { (clientNo), clientName}
Relation "properties" { (propertyNo), propertyAddress, ownerNo}
Relation "owners" { (ownerNo), ownerName}
Relation "ClientRental" { (clientNo, propertyNo), rent, rentStart, rentFinish}
Отношения "клиенты", "свойства" и "владельцы" находятся в 3NF. В реальном мире свойства часто принадлежат нескольким людям или предприятиям, а также часто сдаются в аренду нескольким людям или предприятиям. Но такого рода проблемы не имеют ничего общего с нормализацией. (Пока вы не решите поддержать эту реальную ситуацию).
Что-нибудь еще?