Моделирование данных как делание выводов
Раздел: Моделирование данныхКогда пользователи говорят, что им нужны формы и отчеты с определенными данными и структурами, это подразумевает, что у них в голове имеется некая модель, представляющая вещи в их мире. Однако пользователи могут быть не в состоянии точно описать эту модель. Если бы разработчик спросил типичного пользователя: «Как вы себе представляете структуру модели данных, касающихся продавцов?», то мир пользователя выглядел бы по меньшей мере загадочным, поскольку большинство пользователей не мыслят такими категориями.
Вместо того чтобы задавать подобные вопросы, разработчики должны из высказываний пользователя о формах и отчетах делать выводы о структуре и связях объектов, которые должны храниться в базе данных. Затем разработчики воплощают эти выводы в модели данных, которая трансформируется в проект базы данных, который, в свою очередь, реализуется при помощи СУБД. Затем конструируются приложения, генерирующие отчеты и формы для пользователей.
Таким образом, построение модели данных — это процесс делания предположений. Отчеты и формы напоминают тени на стене. Пользователи могут описать тени, но не могут описать формы тел, отбрасывающих эти тени. Поэтому разработчикам приходится делать предположения, решать обратную задачу, и реконструировать из этих теней структуры и связи.
Этот процесс является, к сожалению, в большей степени искусством, чем наукой. Можно изучить все средства и способы моделирования данных (фактически эти средства и способы являются предметом разговора в следующих двух главах), но их использование представляет собой искусство, которое требует опыта, направляемого интуицией.
Качество модели является важным аспектом. Если документированная модель данных адекватно отображает модель данных, присутствующую в воображении пользователя, есть отличный шанс, что разработанные на ее основании приложения будут отвечать потребностям пользователей. Если же пользовательская модель данных отображена в документированной модели неадекватно, то приложение вряд ли приблизится к тому, что действительно нужно пользователям.