Хочу показать вам как с помощью нынче популярного приложения yEd, которое предназначено для построения различных диаграмм и схем, можно сделать полноценную (со всеми обозначениями) схему базы данных.

Итак, для начала у нас имеется стандартный контейнер с элементами для построения ERD (entity relationship diagram). Их обозначения показаны на рисунке.

image

Небольшое отступление, если вам понадобится вставить просто текст на схему, т.е. без какого-либо блока, то следующие простые шаги из комментария от jaiprakash быстро решают эту проблему. «Выделяете любую связь -> add label -> вводите текст -> convert to node.»

Итак, поставим условную задачу построения следующей схемы.

image

Создадим каркас из базовых элементов.

image

Для того, чтобы добавить обозначения первичных и внешних ключей придется немного исхитриться. Выбрав нужный элемент, добавим на него новый label, который назовем KEY. Т.к. он будет находится под основным блоком, то выделим его с помощью зажатого Ctr.

image

image

Настроим его Placment (размещение), выбрав Internal: top left (внутри, вверху слева), цвет по желанию, Distance(расстояние от краев) в ноль, Insets (вставка в пикселях) в 20 2 0 0, чтобы он был напротив поля атрибута с небольшим расстоянием, Font Family (шрифт) установим Segoe UI Symbol, т.к. он точно поддерживает необходимые символы.

image

Символы для копирования можно найти к примеру в таблице символов Windows.

image

image

Аналогичным образом поступаем с стрелками.

image

Для того, чтобы объединить несколько таблиц в блок, можно воспользоваться Grouping (группировка).

image

Итоговый вариант примера получится такой. Все понятно и красиво :)

image

Надеюсь эта небольшая статья поможет кому-нибудь из начинающий проектировщиков баз данных. Спасибо за внимание, буду рад комментариям.

Комментарии (10)


  1. FDA847
    14.06.2019 16:03
    +1

    Я сам давно пользуюсь этой программой для рисования несложных схем. Для себя нашёл пока один недостаток. Не получается привязать «резиновую» линию к другой линии. Мне приходится добавлять небольшие кружочки:

    image


    1. sudden_death Автор
      14.06.2019 21:11

      Здравствуйте, если я правильно понял Вашу проблему с блок-схемой.



      То могу предложить следующие варианты, которые использую для устранения недостатка.

      1. Можно просто накладывать линии друг на друга(т.е. все линии, что соединяются, сразу ведут в конечный блок) и сгибать в точках соединения, где это необходимо. При выделении и перемещении, структура не меняется.

      image

      2. Использовать из этого поста прием с невидимым блоком(см. пост). Тогда получится что-то вроде того же, только как по мне, может занять больше времени, зато «узлы» будут в панели со списком блоков.

      Почти тоже самое

      Линию придется кропотливо сдвигать по пикселям.

      Скриншот

      Линию без стрелки можно будет взять из блока UML или Edge Types(типы кромок). В принципе можно и сейчас их использовать в Ваших схемах с кружочками для более наглядного вида.

      Скриншот

      Надеюсь чем-то помог, спасибо за приглашение.


    1. Busla
      14.06.2019 21:58

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


  1. Geckelberryfinn
    14.06.2019 17:05

    Кстати, если нужно построить схему уже существующей БД, то можно использовать DBvisualizer, там как раз yFiles используется (который в yEd)


  1. ArsenAbakarov
    14.06.2019 18:58

    Тоже на работе пользуемся, я доволен, но вот не хватает хорошего упарвления z слоями, кстати еще есть и плагин для confluence, но работает он как то странно


  1. miksoft
    14.06.2019 22:33

    Меня yEd однажды здорово выручил. Надо было проанализировать связи полусотни таблиц на сервере, где одних только схем несколько тысяч, а количество таблиц вообще запредельное. Visio и несколько специализированных инструментов, видя такие объемы, задумывались на сутки, крашились и т.п., но результата не дали. А yEd понимает файлы связей в xls-формате (и не только). Выгрузил из словаря СУБД связи, загрузил в yEd — и готово!


    1. sovetnik
      16.06.2019 04:25

      А можете поподробней рассказать? В каком формате файл должен быть, чтоб yEd его смог прочесть?


      1. miksoft
        16.06.2019 17:16

        В простейшем случае это две колонки с именами узлов (для моей задачи таблицы были узлами). Тогда строится граф, в котором каждая строка превращается в связь между узлами.
        Подробнее тут — Import of Excel Files


  1. jaiprakash
    15.06.2019 13:50

    если вам понадобится вставить просто текст на схему, т.е. без какого-либо блока
    Выделяете любую связь -> add label -> вводите текст -> convert to node.


    1. sudden_death Автор
      18.06.2019 10:20

      Спасибо, добавил эту инструкцию в пост.