Перед вами карта компетенций. И сегодня мы разберем первую тему «data modeling». Я бы перевел это как «проектирование предметной области».
Процесс проектирования предметной области можно разделить на 3 этапа. Это концептуальная, логическая и физическая модель. Рассмотрим каждую из них.
Концептуальная модель это по сути моделирование предметной области на салфетке или на листке бумаги. Настолько просто, чтобы это было понятно вашей бабушке и даже вице-президенту крупной компании. И вам действительно повезло, если это один и тот же человек.
В данном случае мы рассмотрим простейший интернет магазин. У нас есть четыре сущности: клиент, товар, корзина и счет. Клиент выбирает товары и кладет их в корзину, товары хранятся в корзине, по корзине выставляется счет, клиент оплачивает этот счет.
Логическая модель чуть сложнее и ее лучше выполнять в каком-то редакторе. Например, в том же draw io. Тут необходимо определить, какие атрибуты есть у наших сущностей и как конкретно эти сущности будут связаны. Например, у клиента есть ФИО, телефон и мейл. Корзина создается для какого-то конкретного клиента, в ней может лежать какое-то количество товаров и по ней можно выставить счет. У товара есть наименование, описание и фоточки. А счет должен быть выставлен по какой-то корзине, в нем должна быть сумма и, так уж и быть, скидка.
У клиента может быть несколько корзин, поэтому тут мы указываем связь как один ко многим. В корзине может лежать множество товаров. Причем один и тот же товар может быть в нескольких корзинах и тут связь многие ко многим. Ну и по конкретной корзине выставляется один счет и поэтому тут связь один к одному.
Физическая модель показывает, как конкретно весь этот зоопарк будет храниться в базе данных. Продукты с корзиной и фотки с продуктом придется связать через таблицу связку, это обычное дело в случае связи «многие ко многим». Так же на этом уровне необходимо понять, какие атрибуты могут быть пустыми.
Например, у корзины не может не быть клиента (ведь если она была создана, это кому-нибудь нужно, а если она никому не нужна, то зачем плодить сущности сверх необходимого?). А вот счет по корзине может быть еще не выставлен.
Теперь поговорим о том, какие вообще бывают типы связей:
К одному – когда связь может быть, но ровно с одним экземпляром другой сущности. Биекция ежжи (на самом деле это не она).
Ко многим – тут связь должна быть со множеством экземпляров (с одним нельзя)
К одному ровно – тут то же, что в первом случае, но связь должна быть у каждого экземпляра и ровно с одном экземпляром. Вот теперь точно биекция.
Ноль к одному – а вот тут связь может быть, а может и не быть, но если она есть, то только с одним экземпляром.
К одному или многим – тут связь должно быть, и может быть с несколькими экземплярами, а может быть только с одним.
К нулю или многим – тут может быть сколько угодно связей, хоть одна, хоть несколько, хоть ни одной.
В заключении хочу напомнить, что, работая в качестве системного аналитика вам в любом случае придется в некотором смысле совмещать эту работу с работой бизнес аналитика. И чем с более абстрактным уровнем вы работаете, тем больше бизнеса и меньше системности… Так в концептуальной модели мы говорим о бизнес сущностях. В логической добавляем в это немного системности и только при разработке физической модели становимся реальным технарем.