Обсуждение:Первая нормальная форма

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В определении к первой нормальной форме указано: ...Нет повторяющихся строк. однако разделе Пример - нормализация производится именно доабвлением повторяющейся строки. Для сравнения - можно посмотреть как первая нормальная форма описана в английской версии. 86.57.255.94 09:16, 11 декабря 2012 (UTC) студент[ответить]

>нормализация производится именно доабвлением повторяющейся строки
Нет там повторяющихся строк. Строки повторяются, то есть идентичны, если значения всех атрибутов в строках совпадают. Там этого нет. ◦ Евгений Мирошниченко ◦ 10:16, 11 декабря 2012 (UTC)[ответить]

Об определение на основе атомарности[править код]

Diff версий В пользу определения на основе атомарности, могу привести следующие аргументы:

  • Более краткое и ясное определение
  • Англ. версия вики придерживается такого же определения. В определение имеется ссылка на источник
  • Можество других источников использует подобное определение: ссылка 1, ссылка 2, ссылка 3

--Snaiffer 07:17, 10 ноября 2014 (UTC)[ответить]

Коллега, я не сомневаюсь, что ваши цели вполне благие, и вы хотите улучшить энциклопедию. Однако делать это желательно на некоторой твёрдой базе опыта и знаний, чтобы не получилось хуже, чем было. В качестве примера я приведу вот эту вашу правку. Что про неё можно сказать? Во-первых, она нарушает авторские права, так как, насколько я вижу, является копипастой со статейки на хабре, ссылку на которую вы сами и привели. Но хуже всего, это очень плохая по качеству статья. В частности, в той части, которую вы поместили в Википедию, всё неправильно или, в лучшем случае, неточно. Понимаете, даже не кое-что, а всё. Далее, автор той статьи ссылается на классическую книгу Кристофера Дейта «Введение в системы баз данных», якобы «на основе материалов которой и была написана данная статья». Однако Крис Дейт никогда не писал всей этой чуши, так что тут автор ещё и привирает.

Это я к тому, что источники надо выбирать тщательно, а для этого надо очень хорошо знать как материал, так и источники.

Что можно теперь сказать про источники в данном случае? Я использую статью «What First Normal Form Really Means» живого классика теории баз данных Криса Дейта, самого известного и авторитетного на данный момент автора в этой сфере. Что используете вы?

  • Ссылку на статью англовики. Однако Википедия сама для себя не является авторитетным источником. На самом деле надо было ссылаться на Elmasri, Ramez, Navathe, Shamkant B.. Fundamentals of Database Systems. Спору нет, книга в принципе известна, но Дейт авторитетнее.
  • Ссылку на статью некоего Nikolay Frolov на хабре. Статьи на Хабре — вообще не авторитетный источник. Nikolay Frolov никому не известен. Качество его статьи я уже указал. Да и он ссылается, заметьте, опять же на Дейта (хотя и врёт, что написал по его книге).
  • Ссылки ещё на два веб-сайта. Безымянные, низкого качества. Не авторитетный источник.

Так что по источникам уже всё ясно. Теперь давайте по сути. Я прокомментирую ваш ключевой тезис: «Более краткое и ясное определение». На самом деле, по обоим пункам всё наоборот. Это определение менее кратное и совершенно не ясное.

Почем оно менее краткое? Потому что то единственное заслуживающее внимания определение, на которые вы ссылаетесь по источникам выше, из книги Elmasri&Navathe, выглядит так: «It states that the domain of an attribute must include only atomic (simple, indivisible) values and that the value of any attribute in a tuple must be a single value from the domain of that attribute». То есть оно содержит в себе две части: часть про атомарность и часть про то, что каждое значение атрибута кортежа является единственным значением из соответствующего домена. Нетрудно видеть, что вторая часть — это в точности и есть текущее определение (по Дейту): «Переменная отношения находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов».

То есть определение Elmasri&Navathe включает в себя определение Дейта, плюс дополняет его требованием атомарности. Поэтому такое определение уж точно не является более кратким. Однако вы его ухитрились «обрезать» (уж простите) таким образом, что осталась только часть про атомарность. Вы выкинули именно ту часть определения 1NF, по которой есть согласие у всех специалистов. Не находите ли вы подобное отношение к редактированию неправильным? Лично я — нахожу.

Теперь по поводу так называемой «ясности». Проблема в том, что условие про atomic (simple, indivisible) value является совершенно неясным. Скажите, является ли значение типа CHAR(N), или DATETIME, или DECIMAL(M, N) атомарным? Да? А вот и нет. Строка есть массив символов, и СУБД предоставляет нам операции обращение к частям этого массива — подстрокам и символам. DATETIME легко декомпозируется на дату и время, дата же — на год, месяц и день, а время — на часы, минуты и т.д. СУБД предоставляет нам операции обращение к этим частям. DECIMAL декомпозируется на целую и дробную часть, и СУБД опять же предоставляет нам операции обращение к этим частям. То есть никакого свойства atomic/indivisible тут и в помине нет. Что уж тут говорить о модном сейчас типе данных XML, или о любом другом типе: множестве, списке...

Что касается примеров с попыткой вставить в значение атрибута кортежа целый список значений (типа в число — список чисел), то это невозможно по определению. Свойство «the value of any attribute in a tuple must be a single value from the domain of that attribute» есть базовое свойство отношения.

Так что никакой ясностью тут и не пахнет. Поэтому грамотные специалисты давно поняли, что требование к «атомарности» атрибутов является и неясным, и бесполезным. А, вообще говоря, и вредным. И об этом у того же Дейта много написано. Один Третий Манифест чего стоит. И, кстати, если уж речь про статью в англовики зашла, почитайте в ней раздел Atomicity. Евгений Мирошниченко 03:40, 11 ноября 2014 (UTC)[ответить]