|
|
|
| Всем привет!
Тема не про mysql, но поскольку всё-таки касается баз данных, решил написать сюда...
Есть у меня БД, состоящая из нескольких таблиц. И что-то вдруг я задумался в каких нормальных формах они находятся? Открыл лекции по БД, почитал, понял, что даже под пытками не вспомню что означает фраза "неключевой атрибут нетранзитивно зависит от ключа". А все остальные фразы в лекциях ещё более запутаны. В связи с этим вопрос: не видел ли кто-нибудь статей, где простыми словами рассказано про нормализацию таблиц? И, если возможно, просвятите в какой всё-таки формы находятся следующие таблицы:
1. structure - поддерживает древовидную структуру.
Поля : id, parent, order, type.
id - первичный ключ, идентификатор элемента дерева; parent - идентификатор родительского элемента; order - порядковый номер элемента на одном из уровней дерева; type - поле типа enumeration.
По моим ощущениям это третья нормальная форма.
2. pages
Поля: id - совпадает с одним из id таблицы structure; dir - уникальное текстовое поле, title - просто текстовое поле.
Есть ощущение, что здесь даже вторая нормальная форма не выполняется, т.к. присутствуют два ключевых столбца.
Уважаемые, поправьте если что не так... Заранее благодарен. | |
|
|
|
|
|
|
|
для: Digger
(22.01.2006 в 00:33)
| | По-моему не хватает первичного ключа в таблице pages - для чего эта таблица предназначена?
PS Вообще в реальной жизни знание нормальных форм редко помогает - разработчику, как правило, сразу видно нужно нормализовать базу или денормализовать и как будет работать быстрее. | |
|
|
|
|
|
|
|
для: cheops
(22.01.2006 в 14:36)
| | structure поддерживает древовидную структуру страниц сайта. Причём существует 2 типа страниц: статичные - их характеристики хранятся в таблице pages (id,dir,title), и интерактивные(модули) их характеристики хранятся в отдельной таблице modules(id, dir, title, is_jury, is_user). Поскольку параметры статичных страниц и модулей отличаются, хранить всю информацию и о тех, и о других в таблице structure - неудобно, будет куча пустых полей, а это нехорошо. Вот я и разнёс их по разным таблицам. Роль первичного ключа и там, и там может играть поле id.
Наверное, было бы логичнее оставить в таблице structure поля id, parent, order, type, dir, title.
А дополнительные параметры, относящиеся к модулям вынести в отдельную табличку с полям id,is_jury,is_user. Но уже поздно, завтра сдавать :)
Про полезность/бесполезность нормализации согласен, но всё-таки было бы любопытно узнать в каких формах находятся вышеперечисленные таблицы. | |
|
|
|