Разделение данных и программ является искусственным – никто не может увидеть данные без использования программ, и большинство программ управляется данными. Поэтому парадоксальным фактом является то, что сообщество управления данными уже 40 лет пытается достичь нечто, называемое независимостью данных – явное отделение программ от данных. В системах баз данных обеспечиваются два вида независимости данных, называемые физической независимостью данных и логической независимостью данных.
У физической независимости данных имеется много различных форм. Однако во всех случаях целью является возможность изменения организации физических данных без нарушения работоспособности любой прикладной программы, зависящей от старого формата данных. Одним из примеров физической независимости данных является возможность системы баз данных разделить строки некоторой таблицы между несколькими дисками и/или несколькими узлами кластера без потребности модификации какого-либо приложения. Другим важным примером физической независимости данных является отображение полей каждой строки реляционной таблицы на разные диски. Хотя в системе баз данных каждая строка может отображаться на непрерывный контейнер хранения (например, запись) одной дисковой страницы, возможен также вариант, когда крупные атрибуты таблицы, обращения к которым происходят не очень часто (соответствующие большим текстовым объектам, изображениям JPEG или многомерным массивам), хранятся в отдельных контейнерах разных дисковых страниц и/или разных томов для максимизации общей производительности системы. И снова подобные оптимизации физического хранения данных реализуются таким образом, чтобы быть совершенно прозрачными для прикладных программ, за исключением, возможно, изменения их производительности. В качестве аналога из научной области можно рассмотреть прикладную программу, в которой используется структура языка C для описания записей данных на диске, и физическая организация этих записей изменяется без потребности в переписывании и даже перекомпиляции прикладной программы (или любого другого приложения, обращающегося к тем же данным).