Модель в реализации MVC является или должна быть бизнес-моделью.
В бизнес-модели описываются поведение и атрибуты субъектов бизнеса, имеющих отношение к приложению. Когда вы это кодируете, сущности становятся классами, а поведение и атрибуты заканчиваются как методы и свойства этих классов соответственно.
Приложение должно где-то хранить свою информацию. Если бы память была безграничной, у нас никогда не было бы перебоев в подаче электроэнергии, и наши ОС никогда не потребовали перезапуска, бизнес-модели было бы достаточно. Однако в реальном мире нам нужно сохранить свойства классов где-нибудь, где они могут выдержать приложение и/или выключение компьютера.
И поэтому бизнес-модель нуждается и использует хранилище данных некоторого типа. Способ организации этого хранилища данных - это модель данных. Как и в большинстве случаев реляционная база данных является предпочтительным хранилищем данных, модель данных обычно представляет собой структуру реляционной базы данных.
Хотя модель данных может быть на логическом уровне, а затем более близка к бизнес-модели OO, в этом контексте мы обычно говорим о технической реализации логической модели. (Одно ключевое различие: логические модели допускают отношения M-N между таблицами, нормализованная техническая модель будет иметь таблицу ссылок, которая имеет отношение N-1 к двум исходным таблицам).
Внешний вид бизнес-модели OO не сопоставляется непосредственно с нормализованной таблицей и дизайном столбцов. Библиотеки ORM (Object - Relational-Mapping) часто используются для сопоставления атрибутов классов с таблицами и столбцами в реляционной базе данных.
Поскольку бизнес-модель использует хранилище данных и, следовательно, модель данных, и вместе они включают модель в реализации MVC, различие между ними часто размывается. Я думаю, что очень важно сохранить свои отдельные роли в вашем сознании. Это помогает решить, куда должна идти логика.
Например, вопреки ответу rsenna, я бы сказал, что изменение зарплаты для одного сотрудника по-прежнему зависит от бизнес-модели, даже если оно меняет ее на буквенное значение, поскольку бизнес-модель может определять все виды сдержек и противовесов, валидации и других бизнес-правил для изменения зарплаты сотрудника. Например, у бизнеса могут быть правила, согласно которым заработная плата не может быть изменена более чем на x процентов, никогда не превысит зарплату генерального директора, не будет соответствовать правилам Союза и т. Д.
Хотя разработчики с централизованными базами данных и многие dba не согласятся, эти типы правила принадлежат бизнес-модели, а не модели данных. DBa предпочитает их в модели данных, возможно, потому, что бизнес-модель обычно реализуется на каком-то языке программирования, а модель данных в базе данных и dba - как держать свои базы данных красивыми, действительными и последовательными.
Я бы сказал, что правила по-прежнему являются частью бизнес-модели, а не модели данных, но вы, конечно, всегда можете реализовать их в триггерах и хранимых процедурах (также). Там, где реализуются правила бизнес-модели, речь идет о ..., реализации, детализации.
Модель бизнес-модели и данных не имеет ничего общего с MVC. Неважно, что такое внешний интерфейс (MVC, Silverlight, ...), он должен быть отделен от вашего бизнес-уровня и уровня данных. – Martin
Когда вы говорите, что «часто методы, которые изменяют состояния объектов, находятся внутри самих этих объектов», вы, вероятно, говорите о шаблоне Active Record. См. Мой ответ ниже. – rsenna
Интересно, что все ответы, до сих пор, предполагают использование базы данных. Я не знаю, что модель данных обязательно относится к базам данных. Некоторые программы, даже большие с большими архитектурами, вообще не используют базу данных, некоторые даже не сохраняют данные. Значит ли это, что у них нет модели данных. Я не имею в виду, что это принято грубо, но это заставляет меня задаться вопросом, как это относится к приложениям вообще, а не только к тем, которые работают с использованием базы данных ... – startoftext