Неэффективное использование памяти

 

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

Чтобы поупражняться в разработке приложений, предположим, что мы решили создать совершенно новую базу данных (с именем Книги) для заказа книг, не проводя предварительного анализа задач и определения объектов. Скорее всего в этом случае мы поместим все данные, необходимые для учета заказчиков и их заказов, в единственную таблицу Заказчики и заказы.

При таком подходе сразу обнаруживаются четыре недостатка.

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

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

Использование памяти для хранения в базе данных сведений, которые можно вычислить при печати отчета. Например, если потребуется общая стоимость заказа, то нет необходимости хранить это значение в поле Общая стоимость таблицы.

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