Насколько мне известно, ваше решение не очень хорошее
Мое решение
Просто я изменяю ваши данные вот так
Теперь я вижу, что это отношение в 0-й нормальной форме
Удалите столбец имени и создайте новое отношение, как показано ниже
Теперь отношения с клиентами в
- 1-я нормальная форма, потому что нет многозначного
- 2-я нормальная форма, потому что нет частичных зависимостей
- 3-я нормальная форма, потому что содержит только столбцы, которые
нетранзитивно зависит от первичного ключа
Отношение покупателя такое же, но оно в 0-й нормальной форме
Теперь я удаляю столбец купил_сайт из отношения покупателя и создаю новое отношение, как показано ниже
Теперь купленное отношение находится в
- 1-я нормальная форма, потому что нет многозначного
- 2-я нормальная форма, потому что нет частичных зависимостей
- 3-я нормальная форма, потому что содержит только столбцы, которые
нетранзитивно зависимый
Так что теперь я обновляю отношения с покупателями, как показано ниже
ID и Item_ID являются первичными ключами (составной первичный ключ)
Теперь отношения между покупателем, покупателем и покупателем находятся в 3-й нормальной форме, поскольку нет многозначных атрибутов, все полностью зависят от первичного ключа, нет транзитивных атрибутов.
Конечные отношения:
- Клиент ( ID , Имя)
- Закупленные_элементы ( Item_ID , Item_Name)
- Покупатель ( Customer_ID, Item_ID )
Мое плохое, я забыл специально упомянуть, что при нормализации мы не можем добавить новый атрибут или удалить атрибуты . Так что здесь я просто изменяю ваше отношение к данным только на более понятное отношение. Спасибо @Mike Sherrill 'Cat Recall за указание на эту проблему.