Статьи

Ответы на Эпизод 4 («Что« нормально », правда?»)

Ну, это был бурный успех … нет!

Очевидно, что нормализация баз данных — это не то, что веб-разработчикам кажется интересным. (Но спасибо malikyte и xhtmlcoder за то, что этот вопрос не превратился в полный город-призрак!)

Однако это позор — за хорошим дизайном данных стоят всевозможные прагматические причины. Вот лишь некоторые из них: правильно спроектированные таблицы часто работают лучше, чем их ненормализованные братья, нормализованные данные намного легче успешно агрегировать, и (что наиболее важно) правильно спроектированные таблицы гораздо легче понять.

Этот последний действительно суть за столами нормализации. Помните — компьютерам все равно, пишем ли мы хороший код; когда мы пишем хороший код, будущие разработчики не будут проклинать наши имена. Нормализация данных относится к той же категории, ориентированной на будущее.

В любом случае, хотя: на ответы. Я буду краток, обещаю.

  1. К моему удивлению, база данных FDA о содержании питательных веществ — фактически 3NF (все имеет первичный ключ, и каждая часть данных представляется атомарной). У меня есть некоторые придирки с парой вариантов дизайна, но на самом деле они довольно незначительны. Это довольно замечательно, когда вы сталкиваетесь с данными, чистыми из коробки.
  2. Хотя демографические данные о населении довольно хорошо разработаны (и их легко найти в лучших формах), они даже не достигают 1NF: в записях отсутствуют первичные ключи. Это обычно имеет место с публичными данными, и это воняет; это делает отслеживание изменений от версии к версии чрезвычайно трудным.
  3. Заявки SEC были подвохом. Они на диалекте XML, поэтому обычные формы не применяются.

    Я думаю, что важно заметить, как различные форматы изменяют способ, которым мы можем производить и потреблять данные; данные SEC являются довольно хорошим примером хорошо сделанного XML, но было бы довольно сложно попытаться поместить эти данные в базу данных любым структурированным способом.

    Если бы я хотел построить сайт вокруг этого материала, я бы, вероятно, использовал что-то вроде Berkeley DB для XML вместо реляционной базы данных.

  4. Данные о цене на газ, хотя и вписаны в лист Excel, используемый в большей степени для представления, чем для управления данными, на самом деле представлены в 3NF (хотя бы потому, что это предварительно агрегированные данные). Данные измерения являются первичным ключом, и все столбцы находятся в особой зависимости от первичного ключа (т. Е. Цена является функцией даты и ничего более).
  5. Данные о количестве арестов несовершеннолетних, как и цены на газ, номинально 3NF, втиснутые в Excel.

Подходит …

Настройтесь на завтрашний день для особого, очень сложного (я надеюсь) испытания, чтобы мы все были заняты в праздничные дни.

Как всегда, если у вас есть вопрос, головоломка или задание, которое, по вашему мнению, могло бы стать хорошим вопросом для этой викторины, напишите мне на jacob -at-jacobian.org .