Согласно первой нормальной форме, каждое пересечение строки и столбца содержит ровно одно значение из применимого домена.
Если имя разделено на три части: Имя, Отчество, Фамилия. За небольшую плату, если я дал отчество как Null.
Нарушает ли это правило 1NF?
````````````````````````````````````````````````````````````````````````````
Client_ID | First Name | Middle_Name | Last_Name
----------------------------------------------------------------------------
3256 | Jamie | NULL | Zacharias
---------------------------------------------------------------------------
8524 | Madonna | Doremus | NULL
4 ответа
Это не нарушает 1-ю нормальную форму. Нарушение первой нормальной формы будет иметь более одного значения для столбца в одной строке. Используя ваш пример, если кто-то изменил свою фамилию, и вы просто добавили новое отдельное значение в ту же строку, или вы добавили псевдонимы в столбец имени, например: `` `` `` `` `` `` ` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `
Client_ID | Имя | Middle_Name | Фамилия
3256 | Джейми, Джеймс | NULL | Захариас Хаффингтон
8524 | Мадонна | Доремус | ЗНАЧЕНИЕ NULL
Для получения дополнительной информации см. Эту статью Википедии: http://en.wikipedia.org/wiki/First_normal_form
Это кажется нормальным в соответствии с 1NF, кажется, ваш первичный ключ не повторяется ни в одной из записей. Вы нарушите 1NF, если будете рассматривать firstName, MiddleName и / или LastName в качестве первичного ключа (что не рекомендуется). На данный момент это кажется хорошим.
Если у вас есть
1, повторяющаяся группа (например, последние две строки с одинаковыми первичными ключами)
Client_ID | Name |
----------------------------------------------------------------------------
3256 | Jamie, NULL, Zacharias |
---------------------------------------------------------------------------
8524 | Madonna, Null, NULL |
---------------------------------------------------------------------------
8524 | Thomas, Doremus, NULL |
2, у вас нет первичного ключа
3, если не все ваши атрибуты прямо (частичная зависимость) или косвенно (транзитивная зависимость) зависят от первичного ключа
Тогда в любом из этих трех случаев ваша таблица нарушает 1NF
Определение первой нормальной формы (1НФ) Э.Ф. Коддом было очень простым:
Отношение [таблица] находится в первой нормальной форме, если оно обладает тем свойством, что ни одна из его областей [наборов возможных значений] не имеет элементов [значений], которые сами являются наборами.
Согласно этому определению очевидно, что первая нормальная форма не исключает наличия значений NULL
, поскольку NULL
не является набором. Кроме того, Правило 3 Кодда требует, чтобы РСУБД систематически обрабатывала значения NULL
.
Теперь C.J. Date определяет первую нормальную форму по-другому и исключает NULL
s. То есть любая таблица с одним или несколькими столбцами, допускающими значение NULL, не соответствует определению Date.
Лично, хотя NULL
иногда могут раздражать, им есть место в РСУБД, и я предпочту определение Кодда определению Дейта.
Нет, первая нормальная форма не говорит, что у вас не должно быть случайных значений NULL
в вашем столбце. Вы нарушите первую нормальную форму, если поместите все имя в один столбец (скажем, в столбец массива) и по-прежнему будете рассматривать имя и фамилию как отдельные объекты, например:
Client_ID | Name |
----------------------------------------------------------------------------
3256 | Jamie, NULL, Zacharias |
---------------------------------------------------------------------------
8524 | Madonna, Doremus, NULL |
Применимый домен: names
со значениями вроде Jamie, Zacharias, Madonna
и Doremus
. В моем примере теперь у вас есть Jamie
и Zacharias
в первой строке, что означает более одного значения из данного домена в одном столбце.
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.