1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
-
<p>Программы, которые п��шут программисты, всегда создаются под определенную предметную область. Например, бухгалтерский софт основывается на правилах ведения бухгалтерского учета. Сайт для просмотра сериалов - на понятиях из телеиндустрии, например, сезон или эпизод.</p>
1
+
<p>Программы, которые пишут программисты, всегда создаются под определенную предметную область. Например, бухгалтерский софт основывается на правилах ведения бухгалтерского учета. Сайт для просмотра сериалов - на понятиях из телеиндустрии, например, сезон или эпизод.</p>
2
<p>Это относится и к любой другой предметной области: бронирование авиабилетов, отелей, поиск туров, продажа и покупка автомобилей:</p>
2
<p>Это относится и к любой другой предметной области: бронирование авиабилетов, отелей, поиск туров, продажа и покупка автомобилей:</p>
3
<p>В этом уроке мы узнаем, что такое сущности предметной области, а также разберем связи между ними. Еще познакомимся с онтологией предметной области и узнаем, зачем она нужна.</p>
3
<p>В этом уроке мы узнаем, что такое сущности предметной области, а также разберем связи между ними. Еще познакомимся с онтологией предметной области и узнаем, зачем она нужна.</p>
4
<h2>Сущности и связи между ними</h2>
4
<h2>Сущности и связи между ними</h2>
5
<p>Предметную область программы важно понимать, как и уметь программировать. Это не значит, что ее нужно знать досконально. Иногда область может быть сложной. Например, бухгалтерия или технологическое производство. Но общее понимание все же требуется.</p>
5
<p>Предметную область программы важно понимать, как и уметь программировать. Это не значит, что ее нужно знать досконально. Иногда область может быть сложной. Например, бухгалтерия или технологическое производство. Но общее понимание все же требуется.</p>
6
<p>Рассмотрим в качестве примера Хекслет. Чтобы понимать его предметную область, нужно выделить ключевые понятия. У обучающих ресурсов это: "курс" и "урок". Но понятий может быть больше. В случае Хекслета еще можно выделить "профессию", "испытание", "code review", "квиз", "участника курса", "проект". Этот список можно продолжать еще долго.</p>
6
<p>Рассмотрим в качестве примера Хекслет. Чтобы понимать его предметную область, нужно выделить ключевые понятия. У обучающих ресурсов это: "курс" и "урок". Но понятий может быть больше. В случае Хекслета еще можно выделить "профессию", "испытание", "code review", "квиз", "участника курса", "проект". Этот список можно продолжать еще долго.</p>
7
<p>На Хекслете существует более двухсот подобных понятий. Еще их называют<strong>сущностями</strong>, и все они описаны в коде.</p>
7
<p>На Хекслете существует более двухсот подобных понятий. Еще их называют<strong>сущностями</strong>, и все они описаны в коде.</p>
8
<p>Сущности находятся в определенных взаимоотношениях друг с другом. Например, квиз содержит в себе вопросы, а каждый вопрос - ответы. Профессия состоит из курсов, а курсы - из уроков, уроки - из теории, квиза и практики. У этих связей есть конкретные названия. Например:</p>
8
<p>Сущности находятся в определенных взаимоотношениях друг с другом. Например, квиз содержит в себе вопросы, а каждый вопрос - ответы. Профессия состоит из курсов, а курсы - из уроков, уроки - из теории, квиза и практики. У этих связей есть конкретные названия. Например:</p>
9
<ul><li>Один урок может находиться только в одном курсе, но курс содержит множество уроков. Это связь<strong>один ко многим</strong>,<strong>one-to-many</strong>или<strong>o2m</strong></li>
9
<ul><li>Один урок может находиться только в одном курсе, но курс содержит множество уроков. Это связь<strong>один ко многим</strong>,<strong>one-to-many</strong>или<strong>o2m</strong></li>
10
<li>Один курс могут проходить множество пользователей, и один пользователь может проходить много курсов. Это связь<strong>многие ко многим</strong>,<strong>many-to-many</strong>или<strong>m2m</strong></li>
10
<li>Один курс могут проходить множество пользователей, и один пользователь может проходить много курсов. Это связь<strong>многие ко многим</strong>,<strong>many-to-many</strong>или<strong>m2m</strong></li>
11
</ul><ul><li>Реже встречается отношение<strong>один к одному</strong>,<strong>one-to-one</strong>или<strong>o2o</strong>. На Хекслете так связаны пользователь и эксперт</li>
11
</ul><ul><li>Реже встречается отношение<strong>один к одному</strong>,<strong>one-to-one</strong>или<strong>o2o</strong>. На Хекслете так связаны пользователь и эксперт</li>
12
</ul><p>Одна и та же сущность с точки зрения разных систем может выглядеть по-разному. Например, пользователь Хекслета с точки зрения бухгалтера и пользователь с точки зрения наставника отличаются.</p>
12
</ul><p>Одна и та же сущность с точки зрения разных систем может выглядеть по-разному. Например, пользователь Хекслета с точки зрения бухгалтера и пользователь с точки зрения наставника отличаются.</p>
13
<p>При этом не всегда можно однозначно сказать, какая связь существует между двумя сущностями. Иногда программисты думают наперед и сразу формируют более сложные связи, например, m2m, а не o2m. Это сказывается на сложности кода.</p>
13
<p>При этом не всегда можно однозначно сказать, какая связь существует между двумя сущностями. Иногда программисты думают наперед и сразу формируют более сложные связи, например, m2m, а не o2m. Это сказывается на сложности кода.</p>
14
<p>Чем сложнее связь, тем больше кода и выше стоимость его создания и поддержки. Сложность связей от простой к сложной: o2o, o2m, m2m.</p>
14
<p>Чем сложнее связь, тем больше кода и выше стоимость его создания и поддержки. Сложность связей от простой к сложной: o2o, o2m, m2m.</p>
15
<p>Иногда программист ошибается при выборе связи. Это значит, что он плохо понимает предметную область.</p>
15
<p>Иногда программист ошибается при выборе связи. Это значит, что он плохо понимает предметную область.</p>
16
<p>Предположим, что в системе нужно реализовать пользователя и заграничный паспорт. Кажется, что между этими понятиями связь один к одному. Один пользователь может иметь один заграничный паспорт. Но это не верно.</p>
16
<p>Предположим, что в системе нужно реализовать пользователя и заграничный паспорт. Кажется, что между этими понятиями связь один к одному. Один пользователь может иметь один заграничный паспорт. Но это не верно.</p>
17
<p>Паспорт может поменяться, если он был утерян или закончился срок действия. Также в некоторых странах разрешено владеть одновременно несколькими заграничными паспортами.</p>
17
<p>Паспорт может поменяться, если он был утерян или закончился срок действия. Также в некоторых странах разрешено владеть одновременно несколькими заграничными паспортами.</p>
18
<p>Программисту не нужно создавать универсальную модель области. Он должен понять потребности конкретного бизнеса, выделить для них только значимые части рассматриваемой предметной области и перенести их в код. В этом ему поможет эксперт.</p>
18
<p>Программисту не нужно создавать универсальную модель области. Он должен понять потребности конкретного бизнеса, выделить для них только значимые части рассматриваемой предметной области и перенести их в код. В этом ему поможет эксперт.</p>
19
<h2>Онтология предметной области</h2>
19
<h2>Онтология предметной области</h2>
20
<p>Описание объектов рассматриваемой области и связей между ними называется<strong>онтологией предметной области</strong>. Ее хорошо знают эксперты соответствующей области. Например, в бухгалтерии - бухгалтер, в обучении - преподаватель.</p>
20
<p>Описание объектов рассматриваемой области и связей между ними называется<strong>онтологией предметной области</strong>. Ее хорошо знают эксперты соответствующей области. Например, в бухгалтерии - бухгалтер, в обучении - преподаватель.</p>
21
<p>В отличие от программистов, эксперты в области часто представляют свою область на интуитивном уровне - неформально. На практике программисты, бизнес-аналитики или менеджеры общаются с заказчиками, которые могут сами выступать в роли экспертов и строят с ними формальную онтологию. Этот процесс происходит постоянно в процессе развития проекта и не выделяется в отдельный этап проектирования.</p>
21
<p>В отличие от программистов, эксперты в области часто представляют свою область на интуитивном уровне - неформально. На практике программисты, бизнес-аналитики или менеджеры общаются с заказчиками, которые могут сами выступать в роли экспертов и строят с ними формальную онтологию. Этот процесс происходит постоянно в процессе развития проекта и не выделяется в отдельный этап проектирования.</p>
22
<p>Создатели онтологии выделяют конкретные термины, договариваются о том, что они означают и как связаны друг с другом. Затем с помощью ER-модели программист формирует необходимую модель данных:</p>
22
<p>Создатели онтологии выделяют конкретные термины, договариваются о том, что они означают и как связаны друг с другом. Затем с помощью ER-модели программист формирует необходимую модель данных:</p>
23
<p>ER-модель используется при высокоуровневом проектировании баз данных. На этом этапе уже проявляются зачатки архитектуры будущего приложения.</p>
23
<p>ER-модель используется при высокоуровневом проектировании баз данных. На этом этапе уже проявляются зачатки архитектуры будущего приложения.</p>
24
<p>В зависимости от языка программирования будет меняться способ представления сущностей в коде. Например, в некоторых языках с помощью абстрактных типов данных, интерфейсов или классов определяются типы, в других - структуры, а в третьих не предоставляют никаких вариантов, кроме словарей - ассоциативных массивов.</p>
24
<p>В зависимости от языка программирования будет меняться способ представления сущностей в коде. Например, в некоторых языках с помощью абстрактных типов данных, интерфейсов или классов определяются типы, в других - структуры, а в третьих не предоставляют никаких вариантов, кроме словарей - ассоциативных массивов.</p>
25
<h2>Выводы</h2>
25
<h2>Выводы</h2>
26
<p>В этом уроке мы узнали, что такое сущности предметной области, а также разобрали связи между ними. Еще познакомились с онтологией предметной области. Она нужна, чтобы описывать объекты рассматриваемой области и связи между ними.</p>
26
<p>В этом уроке мы узнали, что такое сущности предметной области, а также разобрали связи между ними. Еще познакомились с онтологией предметной области. Она нужна, чтобы описывать объекты рассматриваемой области и связи между ними.</p>
27
<p>Со следующего урока мы начнем изучать различные предметные области и строить подходящие модели данных.</p>
27
<p>Со следующего урока мы начнем изучать различные предметные области и строить подходящие модели данных.</p>