Новые книги

Автор книги «Разоблаченный логотип, или Психогеометрия», знаменитый эксперт по визуальной психодиагностике, физиогномике и графологии Владимир Тараненко, предпринял уникальную попытку проанализировать пространство окружающих нас вещей и выявить воздействие содержащихся в них геометрических форм не на символическом и культурном, а на глубинном психологическом уровне.

Владимир Тараненко на примерах убеждает нас, что казалось бы привычные окружающие нас вещи: логотипы, товарные знаки, рекламные проспекты и визитные карточки, будучи носителями базовых геометрических форм и элементов, оказывают подсознательное влияние на человека и несут в себе скрытую информацию.

Эта книга предназначена всем тем, кто хотел бы научиться расшифровывать пространственные сигналы и овладеть психогеометрическими технологиями будущего: бизнесменам, высокоэффективным менеджерам, специалистам по рекламе и маркетингу.
Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS. Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы. B четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64. Книга состоит из 14 глав, словаря терминов и предметного указателя. Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.

Названия всех команд, диалоговых окон и других интерфейсных элементов операционной системы приведены как на английском языке, так и на русском.

Версия Fb2 редакции —

. Об ошибках просьба сообщать по адресу — [email protected].

1.5

Почему проект БД может быть плохим?

 
 

4.3. Почему проект БД может быть плохим?

Начинающий проектировщик будет использовать отношение "Питание" (рис. 4.2) в качестве завершенной БД. Действительно, зачем разбивать отношение "Питание" на несколько более мелких отношений (см. например, рис. 3.2), если оно заключает в себе все данные? А разбивать надо потому, что при использовании универсального отношения возникает несколько проблем:

1. Избыточность. Данные практически всех столбцов многократно повторяются. Повторяются и некоторые наборы данных (Блюдо-Вид-Рецепт, Продукт-Калорийность, Поставщик-Город-Страна). Нежелательно повторение рецептов, некоторые из которых намного больше рецепта "Лобио" (см. рис. 2.3). И уж совсем плохо, что все данные о блюде (включая рецепт) повторяются каждый раз, когда это блюдо включается в меню.

2. Потенциальная противоречивость (аномалии обновления). Вследствие избыточности можно обновить адрес поставщика в одной строке, оставляя его неизменным в других. Если поставщик кофе сообщил о своем переезде в Харбин и была обновлена строка с продуктом кофе, то у поставщика "Хуанхэ" появляется два адреса, один из которых не актуален. Следовательно, при обновлениях необходимо просматривать всю таблицу для нахождения и изменения всех подходящих строк.

3. Аномалии включения. В БД не может быть записан новый поставщик ("Няринга", Вильнюс, Литва), если поставляемый им продукт (Огурцы) не используется ни в одном блюде. Можно, конечно, поместить неопределенные значения в столбцы Блюдо, Вид, Порций и Вес (г) для этого поставщика. Но если появится блюдо, в котором используется этот продукт, не забудем ли мы удалить строку с неопределенными значениями?

По аналогичным причинам нельзя ввести и новый продукт (например, Баклажаны), который предлагает существующий поставщик (например, "Полесье"). А как ввести новое блюдо, если в нем используется новый продукт (Крабы)?

4. Аномалии удаления. Обратная проблема возникает при необходимости удаления всех продуктов, поставляемых данным поставщиком или всех блюд, использующих эти продукты. При таких удалениях будут утрачены сведения о таком поставщике.

Многие проблемы этого примера исчезнут, если выделить в отдельные таблицы сведения о блюдах, рецептах, расходе блюд, продуктах и их поставщиках, а также создать связующие таблицы "Состав" и "Поставки" (рис. 4.3).

Блюда
Блюдо Вид
Лобио Закуска
Харчо Суп
Шашлык Горячее
Кофе Десерт
... ...
Рецепты
Блюдо Рецепт
Лобио Ломаную очищ
... ...
Расход
Блюдо Порций Дата_Р
Лобио 158 1/9/94
Харчо 144 1/9/94
Шашлык 207 1/9/94
Кофе 235 1/9/94
... ... ...
Продукты
Продукт Калор.
Фасоль 3070
Лук 450
Масло 7420
Зелень 180
Мясо 1660
... ...
Состав
Блюдо Продукт Вес (г)
Лобио Фасоль 200
Лобио Лук 40
Лобио Масло 30
Лобио Зелень 10
Харчо Мясо 80
... ... ...
Поставщики
Поставщик Город Страна
"Полесье" Киев Украина
"Наталка" Киев Украина
"Хуанхэ" Пекин Китай
"Лайма" Рига Латвия
"Юрмала" Рига Латвия
... ... ...
Поставки
Поставщик Город Продукт Вес (кг) Цена ($) Дата_П
"Полесье" Киев Томаты 120 0.45 27/8/94
"Полесье" Киев Масло 50 1.62 27/8/94
"Полесье" Киев Лук 50 0.61 27/8/94
"Наталка" Киев Лук 100 0.52 27/8/94
... ... ... ... ... ...

Рис. 4.3. Преобразование универсального отношения "Питание" (первый вариант)

Включение. Простым добавлением строк (Поставщики; "Няринга", Вильнюс, Литва) и (Поставки; "Няринга", Вильнюс, Огурцы, 40) можно ввести информацию о новом поставщике. Аналогично можно ввести данные о новом продукте (Продукты; Баклажаны, 240) и (Поставки; "Полесье", Киев, Баклажаны, 50).

Удаление. Удаление сведений о некоторых поставках или блюдах не приводит к потере сведений о поставщиках.

Обновление. В таблицах рис. 4.3 все еще много повторяющихся данных, находящихся в связующих таблицах (Состав и Поставки). Следовательно, в данном варианте БД сохранилась потенциальная противоречивость: для изменения названия поставщика с "Полесье" на "Днепро" придется изменять не только строку таблицы Поставщики, но и множество строк таблицы Поставки. При этом не исключено, что в БД будут одновременно храниться: "Полесье", "Палесье", "Днепро", "Днипро" и другие варианты названий.

Кроме того, повторяющиеся текстовые данные (такие как название блюда "Рулет из телячей грудинки с сосисками и гарниром из разноцветного пюре" или продукта "Колбаса московская сырокопченая") существенно увеличивают объем хранимых данных.

Для исключения ссылок на длинные текстовые значения последние обычно нумеруют: нумеруют блюда в больших кулинарных книгах, товары (продукты) в каталогах и т.д. Воспользуемся этим приемом для исключения избыточного дублирования данных и появления ошибок при копировании длинных текстовых значений (рис. 4.4). Теперь при изменении названия поставщика "Полесье" на "Днепро" исправляется единственное значение в таблице Поставщики. И даже если оно вводится с ошибкой ("Днипро"), то это не может повлиять на связь между поставщиками и продуктами (в связующей таблице Поставки используются номера поставщиков и продуктов, а не их названия).

Блюда
БЛ Блюдо Вид
1 Лобио Закуска
2 Харчо Суп
3 Шашлык Горячее
4 Кофе Десерт
... ... ...
Рецепты
Блюдо Рецепт
Лобио Ломаную очищ
... ...
Расход
Блюдо Порций Дата_Р
Лобио 158 1/9/94
Харчо 144 1/9/94
Шашлык 207 1/9/94
Кофе 235 1/9/94
... ... ...
Продукты
ПР Продукт Калор.
1 Фасоль 3070
2 Лук 450
3 Масло 7420
4 Зелень 180
5 Мясо 1660
... ... ...
Состав
БЛ ПР Вес (г)
1 1 200
1 2 40
1 3 30
1 4 10
2 5 80
... ... ...
Поставщики
ПОС Поставщик Город Страна
1 "Полесье" Киев Украина
2 "Наталка" Киев Украина
3 "Хуанхэ" Пекин Китай
4 "Лайма" Рига Латвия
5 "Юрмала" Рига Латвия
... ... ... ...
Поставки
ПОС ПР Вес (кг) Цена ($) Дата_П
1 6 120 0.45 27/8/94
1 3 50 1.62 27/8/94
1 2 50 0.61 27/8/94
2 2 100 0.52 27/8/94
... ... ... ... ...

Рис. 4.4. Преобразование универсального отношения "Питание" (второй вариант)

[Назад] [Содержание] [Вперед]