Это не 3NF, но не из-за ваших внешних ключей.У вас есть некоторые функциональные зависимости, левая сторона которых не является ключом-кандидатом:
subtotal,tax -> total
subtotal,total -> tax
tax,total -> subtotal
Алгоритм сокращения до 3NF скажет разделить вашу схему на:
PAYMENTNUMBER | date | subtotal | tax | talentid | agentnumber
и
subtotal | tax | total
В этот момент, предполагая, что "talentid -> agentnumber" или наоборот не являются зависимостями, схема находится в 3NF, но ваша (промежуточный итог, налогИтого) таблица в основном бесполезна, так как при сохранении всех трех очевидная избыточность.Было бы лучше просто использовать:
PAYMENTNUMBER | date | subtotal | tax | talentid | agentnumber
И не хранить общее количество вообще.Если вы хотите получить его в запросе, вы можете просто SELECT (subtotal+tax) as total
при условии, что промежуточный итог и налог оба являются числовыми типами.