Найти в Дзене

Data Modeling / Проектирование предметной области

Проектирование предметной области для системного аналитика

Перед вами карта компетенций. И сегодня мы разберем первую тему «data modeling». Я бы перевел это как «проектирование предметной области».

Карта компетенций системного аналитика
Карта компетенций системного аналитика

Процесс проектирования предметной области можно разделить на 3 этапа. Это концептуальная, логическая и физическая модель. Рассмотрим каждую из них.

Уровни проектирования
Уровни проектирования

Концептуальная модель это по сути моделирование предметной области на салфетке или на листке бумаги. Настолько просто, чтобы это было понятно вашей бабушке и даже вице-президенту крупной компании. И вам действительно повезло, если это один и тот же человек.

В данном случае мы рассмотрим простейший интернет магазин. У нас есть четыре сущности: клиент, товар, корзина и счет. Клиент выбирает товары и кладет их в корзину, товары хранятся в корзине, по корзине выставляется счет, клиент оплачивает этот счет.

Концептуальная модель данных
Концептуальная модель данных

Логическая модель чуть сложнее и ее лучше выполнять в каком-то редакторе. Например, в том же draw io. Тут необходимо определить, какие атрибуты есть у наших сущностей и как конкретно эти сущности будут связаны. Например, у клиента есть ФИО, телефон и мейл. Корзина создается для какого-то конкретного клиента, в ней может лежать какое-то количество товаров и по ней можно выставить счет. У товара есть наименование, описание и фоточки. А счет должен быть выставлен по какой-то корзине, в нем должна быть сумма и, так уж и быть, скидка.

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

Логическая модель данных
Логическая модель данных

Физическая модель показывает, как конкретно весь этот зоопарк будет храниться в базе данных. Продукты с корзиной и фотки с продуктом придется связать через таблицу связку, это обычное дело в случае связи «многие ко многим». Так же на этом уровне необходимо понять, какие атрибуты могут быть пустыми.

Например, у корзины не может не быть клиента (ведь если она была создана, это кому-нибудь нужно, а если она никому не нужна, то зачем плодить сущности сверх необходимого?). А вот счет по корзине может быть еще не выставлен.

Физическая модель данных
Физическая модель данных

Теперь поговорим о том, какие вообще бывают типы связей:

Типы связей между сущностями
Типы связей между сущностями

К одному – когда связь может быть, но ровно с одним экземпляром другой сущности. Биекция ежжи (на самом деле это не она).

Ко многим – тут связь должна быть со множеством экземпляров (с одним нельзя)

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

Ноль к одному – а вот тут связь может быть, а может и не быть, но если она есть, то только с одним экземпляром.

К одному или многим – тут связь должно быть, и может быть с несколькими экземплярами, а может быть только с одним.

К нулю или многим – тут может быть сколько угодно связей, хоть одна, хоть несколько, хоть ни одной.

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