Определение отношения 1NF без данных
У меня есть отношение
CAR_SALE(Car#, Date_sold, Salesperson#, Commission%, Discount_amt)
Primary Key: {Car#, Salesperson#}
Additional Dependencies: Date_sold -> Discount_amt
Salesperson# -> Commission%
и я должен определить, находится ли он в 1NF, 2NF или 3NF. Нам дают только схему отношений без данных. У меня возникли проблемы с определением, если это в 1NF. Чтобы что-то было в 1NF, у него не должно быть повторяющихся групп для атрибута. Учитывая эту схему отношений без фактических данных, не было бы невозможно сказать? Разве мне не нужны фактические данные, чтобы определить, будет ли это 1NF? Или наличие первичного ключа дало бы мне знать, что никакие атрибуты не будут повторяться?
Я знаю, что для 2NF он должен быть в 1NF, и все неключевые атрибуты должны зависеть от первичного ключа, а для 3NF он должен быть в 2NF и без трансляционных зависимостей.
1 ответ
Многие люди используют "1NF" для обозначения некоторого расплывчатого представления о типах атрибутов, которые являются неким расплывчатым способом, называемым " атомным". Изначально Кодд имел в виду "нормализованный", позже "1NF", что означало отсутствие атрибутов, которые сами были бы отношениями. Все другие виды использования "атомарного" путаницы бесполезны и неоправданны, полученная мудрость, и то, является ли значение "атомарным", в конечном счете, на практике, если в нем нет частей, которые вы хотите использовать в качестве значений для некоторого атрибута в кортеже в отношении, которое является результат запроса. В любом случае вы не можете просто определить по атрибутам, находится ли отношение в 1NF. Если вам сообщают типы атрибутов и четкие критерии для "атомарного" (которое дал Кодд: не будучи отношением), то вы можете сказать. Другие люди считают "1NF" бесполезным или определяют его как "отношение". Просто убедитесь, что вы узнаете, что имеется в виду, когда вы слышите / видите, что используется 1NF (Удачи в получении разумного определения "атомного".)
Иногда люди ошибочно используют "повторяющуюся группу" для "неатомного". (Но повторяющаяся группа на самом деле является понятием из предреляционных нереляционных баз данных, которые не могут появляться в отношениях.)
Иногда люди, смутно запутанно, бесполезно ошибочно включают, что отношение не может иметь несколько значений для атрибута в кортеже, что в любом случае невозможно, поскольку отношение по определению имеет одно значение для атрибута в кортеже.
Иногда люди, смутно смущенно и бесполезно, ошибочно включают в свои "1NF", что не существует нескольких похожих признаков, для некоторого понятия сходства.
Смотрите этот ответ и этот.