Определение Криса Дейта на самом деле очень хорошее, если вы понимаете, что он имеет в виду:
Каждый атрибут
Ваши данные должны быть разбиты на отдельные, отдельные атрибуты / столбцы / значения, которые не зависят от каких-либо других атрибутов. Ваше полное имя является атрибутом. Ваша дата рождения является атрибутом. Ваш возраст не является атрибутом, он зависит от текущей даты, которая не является частью вашей даты рождения.
должен представлять факт
Каждый атрибут - это отдельный факт, а не набор фактов. Изменение одного бита в атрибуте меняет весь смысл. Ваша дата рождения это факт. Ваше полное имя является фактом? Ну, в некоторых случаях это так, потому что если вы измените свою фамилию, ваше полное имя будет другим, не так ли? Но для генеалога у вас есть фамилия и фамилия, и если вы измените свою фамилию, ваша фамилия не изменится, поэтому это отдельные факты.
о ключе,
Один атрибут особенный, это ключ. Ключ является атрибутом, который должен быть уникальным для всей информации в ваших данных и никогда не должен изменяться. Ваше полное имя не является ключом, потому что оно может измениться. Ваш номер социального страхования не является ключевым, потому что они используются повторно. Ваш SSN плюс дата рождения не является ключом, даже если комбинация никогда не может быть повторно использована, потому что атрибут не может быть комбинацией двух фактов. GUID является ключом. Число, которое вы увеличиваете и никогда не используете повторно, является ключом.
весь ключ,
Одного ключа должно быть достаточно [ и необходимо! ] для идентификации ваших значений; вы не можете иметь одинаковые данные, представленные разными ключами, и подмножество ключевых столбцов не может быть достаточным для выявления факта.
Предположим, у вас есть адресная книга с ключом GUID, именем и значениями адреса. Это нормально, чтобы одно и то же имя появлялось дважды с разными ключами, если они представляют разных людей и не являются «одними и теми же данными».
Если Мэри Джонс в бухгалтерском учете меняет свое имя на Мэри Смит, Мэри Джонс в отделе продаж также не меняет своего имени.
С другой стороны, если Мэри Смит и Джон Смит имеют один и тот же уличный адрес, и это действительно одно и то же место, это недопустимо. Вы должны создать новую пару ключ / значение с адресом улицы и новым ключом.
Вам также не разрешается использовать ключ для этого нового адреса одной улицы в качестве значения в адресной книге, поскольку теперь один и тот же ключ адреса улицы будет представлен дважды.
Вместо этого вы должны создать третью пару ключ / значение со значениями ключа адресной книги и ключа адреса улицы; Вы находите уличный адрес человека, сопоставляя его ключ книги и ключ адреса в этой группе значений.
и ничего кроме ключа
Не должно быть ничего, кроме ключа, который идентифицирует ваши значения. Например, если вам разрешен адрес «Тадж-Махал» (при условии, что он есть только один), вам не разрешается указывать значение города в той же записи,
поскольку, если вы знаете адрес, вы также знаете город. Это также открыло бы возможность присутствия более одного Тадж-Махала в другом городе.
Вместо этого вам нужно снова создать вторичный ключ Location с уникальными значениями, такими как Taj, Белый дом в Вашингтоне и т. Д. И их города.
Или запретите «адреса», которые являются уникальными для города.
Так помоги мне, Кодд.