Перейти к содержимому

Моделирование данных ради смысла

Также доступно на 28 языках

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

An open sketchbook on a drafting table at dawn, a building sketched on one page and a data model on the other, with a pencil, an eraser, a cup and a lamp.
Изображение создано с помощью ИИ

Учебное пособие к главе 2 курса Data Architect. Сначала прочитайте шесть модулей; эта страница поможет проверить, что запомнилось.

Об этом учебном пособии. Оно построено только на собственных материалах этого курса и на списке целей из опубликованного руководства Salesforce по экзамену. Оно никогда не основано на настоящих экзаменационных вопросах и не претендует на знание того, что будет на экзамене. Если вы сдавали экзамен, пожалуйста, не присылайте мне вопросы из него: сертификационное соглашение запрещает ими делиться, да и заучивание ответов — неправильный путь к тому, чтобы стать архитектором.

Эта глава — основа для раздела экзамена Data Modeling and Database Design (моделирование данных и проектирование баз данных), на который приходится четверть экзамена. Она охватывает мышление; следующая глава, Архитектура данных Salesforce, — то, как это строит платформа. Поэтому для большей части того, что проверяется по объектам, полям и связям, нужны обе главы.

Пункты этой главы, которые с наибольшей вероятностью важны на экзамене. Каждый привязан к своей экзаменационной цели и ведет туда, где он объясняется. Отмечайте их по мере продвижения.

DM-1: сравнение техник проектирования модели данных Salesforce

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

  • На минуту забудьте о Salesforce. Смоделируйте бизнес, прежде чем сопоставлять его с организацией и контактом.
  • Прислушивайтесь к слову, за которым прячутся две вещи. В Steve Trucking «клиент» был и розничным партнером, и получателем.
  • Модель — часть разговора. Ваша первая модель не обязана быть правильной; она нужна, чтобы показать вам, где вы ошибаетесь.
  • Давайте линиям имена. Две модели с одинаковыми прямоугольниками могут означать разное.
  • Спрашивайте «сейчас или во времени?» о каждой связи.
  • Уникальный, неизменный, без смысла, никогда не PII.
  • Поместите факт туда, где ему место, затем отступайте намеренно и записывайте почему.
  • Денормализация не убирает сложность, а перемещает ее. Знайте, кому принадлежит истина.
  • Один источник истины, много форм: экраны, отчеты, хранилище данных и ИИ.
  • Не проектируйте из Setup. Нарисуйте модель, прежде чем нажать New Custom Object.
  • Прослеживайте каждое физическое решение назад к тому, что нужно бизнесу.
ТерминВ одной строке
СущностьВещь, которая важна бизнесу и о которой он хранит данные
Сущность-кандидатСуществительное, которое может стать сущностью, после того как вы о нем спросили
АтрибутФакт, который описывает сущность
СвязьТо, как соединены две сущности, названное языком бизнеса
КардинальностьСколько одних связано со сколькими другими
ОбязательностьОбязательна ли связь или может быть нулевой
«Воронья лапка»Отметка «много» на конце линии
Связующий объект (junction object)Способ Salesforce построить связь «многие ко многим»: дочерний объект обоих родителей
Концептуальная модельЧто существует в бизнесе и как это связано; без Salesforce
Логическая модельДанные: атрибуты, уникальные ID и связи, все еще без привязки к платформе
Физическая модельКак это построит платформа: объекты, поля и типы связей
Естественный ключИдентификатор, который уже существует в бизнесе, например VIN грузовика
Суррогатный ключИдентификатор, созданный только для того, чтобы определять запись
Внешний идентификаторID той же записи в другой системе, который хранят и сопоставляют
Нормализация (1НФ, 2НФ, 3НФ)Размещение каждого факта там, где ему место: одно значение в поле, факты обо всем ключе, никаких фактов о других фактах
ДенормализацияНамеренное копирование или уплощение данных по причине, которую можно назвать
Аномалия обновленияОдин и тот же факт хранится во многих местах, поэтому после одного изменения часть копий оказывается неверной

Короткие сценарии в стиле курса. Определитесь с ответом, прежде чем открывать его.

1. Бизнес говорит вам, что бригада водит грузовик. Через шесть недель кто-то спрашивает, какая бригада была на грузовике 117 в определенный день. Что должно было быть в модели?

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

2. Команда предлагает использовать номер телефона каждого получателя как уникальный ID, «потому что он уникален». Что вы скажете?

Он не проходит проверки: номера телефонов меняются и бывают общими, так что он не неизменный и не надежно уникальный, а еще это персональные данные, которые скопируются в каждую систему, связанную с записью. Используйте сгенерированный ID без смысла, а номер телефона держите как атрибут. Перечитайте Теперь нужно поговорить об уникальных ID.

3. У доставки есть поля «Позиция 1», «Позиция 2» и «Позиция 3». Приходит доставка с четырьмя позициями. В чем настоящая проблема и как ее исправить?

Модель спрятала повторяющуюся структуру внутри полей (проблема первой нормальной формы). Исправление — не поле «Позиция 4», а сущность позиция доставки, дочерняя для доставки, так что каждая позиция — это запись. Перечитайте Первая нормальная форма.

4. Каждая доставка хранит имя руководителя распределительного центра. Руководитель меняется. Что пошло не так?

Факт о другой вещи (распределительном центре) хранился в доставке: это проблема третьей нормальной формы, а теперь еще и аномалия обновления в сотнях записей. Руководителю место у распределительного центра; доставка ссылается на распределительный центр. Перечитайте Третья нормальная форма.

5. Виду остановки (только доставка, с установкой, с вывозом старой техники) нужны длительность, навыки бригады и чек-лист. Список выбора или объект?

Объект. У него больше одного столбца информации, им управляет бизнес, и он меняется по собственному графику. Статус доставки — короткий стабильный список меток — остается списком выбора. Перечитайте Lookup или список выбора?.

6. Партнеры хотят оценочную карту своевременности по регионам, а регион хранится в распределительном центре. Вы копируете регион в каждую доставку. Что вы должны решить?

Кому принадлежит истина, как копия остается синхронизированной и должны ли старые доставки сохранять регион, который был верен в момент доставки, или следовать за распределительным центром, если он переедет. Денормализация переместила сложность, а не убрала ее. Перечитайте Иногда побеждает отчетность.

7. Трюк вроде «Сидеть» может быть связан с сотнями тысяч питомцев. Master-detail или lookup от Трюка питомца к Трюку?

Lookup. Рекомендация Salesforce — не больше 10 000 дочерних записей у одного родителя, и популярный трюк ее превысит. Master-detail подходит для связи Трюка питомца с Питомцем, потому что трюк питомца никогда не переподчиняют и один питомец знает лишь несколько трюков; к тому же именно это позволяет питомцу сводить счетчик «Освоенные трюки». Перечитайте Сидеть, стоять, моделировать.