LINUX.ORG.RU

нарисовать DB Модель graphviz-ом


0

0

или есть альтернативы для генерации модели базы скриптами? Я вчера бился с ним, но ничего путного не получается. dot стремится расположить все узлы диаграммы в одну линию, совсем не оптимально. Многие линии получаются необоснованно длинными.

Если задать конкретные размеры диаграммы в дюймах и задать dpi, то он страшно скалирует все. Фигуры скалирует, а текст нет и все равно пытается все расположить в одну линию.

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

Как быть?

Вот пример DOT файла, мне совсем не нравится, что выходит. И это один из простеньких вариантов, будут комбинации и посложнее.

Конкретно мне не нравится что: TD_WORK_STEP_GROUP, TD_WORK_PROCESS и TD_WORK_STEP расположенны не оптимально. Их можно было расположить ближе к TD_VSA_STRUCTURE, а не в одну линию.

digraph G {
graph [ ratio="fill", dpi="75", size="17,9", sep="0.002,0.002", overlap="scalexy" ];
MD_VALIDITY [ shape="ellipse",rank="same" ];
TD_PRODUCT_TEARDOWN [ shape="box",rank="min" ];
TD_PRODUCT_TEARDOWN -> TD_COMPONENT_STRUCT;
TD_PRODUCT_TEARDOWN -> TD_STD_TEARDOWN_DEPTH;
TD_STD_STRUCT_VALUE [ shape="box",rank="same" ];
TD_STD_STRUCT_VALUE -> MD_VALIDITY;
TD_STD_STRUCT_VALUE -> TD_VSA_STRUCTURE;
TD_VSAS_AP [ shape="box",rank="max" ];
TD_VSAS_AP -> TD_ASSEMBLY_PART_TYPE;
TD_VSAS_AP -> TD_VSA_STRUCTURE;
TD_VSAS_APG [ shape="box",rank="max" ];
TD_VSAS_APG -> TD_VSA_STRUCTURE;
TD_VSAS_BOM [ shape="box",rank="max" ];
TD_VSAS_BOM -> TD_VSAS_BOM;
TD_VSAS_BOM -> TD_VSA_STRUCTURE;
TD_VSAS_SP [ shape="box",rank="max" ];
TD_VSAS_SP -> TD_VSA_STRUCTURE;
TD_VSA_STRUCTURE [ shape="box",rank="same" ];
TD_VSA_STRUCTURE -> TD_PRODUCT_TEARDOWN;
TD_VSA_STRUCTURE -> TD_VSA_STRUCTURE;
TD_WEIGHT [ shape="box",rank="same" ];
TD_WEIGHT -> TD_VSA_STRUCTURE;
TD_WORK_PROCESS [ shape="box",rank="same" ];
TD_WORK_PROCESS -> TD_VSA_STRUCTURE;
TD_WORK_STEP [ shape="box",rank="same" ];
TD_WORK_STEP -> TD_VSA_STRUCTURE;
TD_WORK_STEP -> TD_WORK_PROCESS;
TD_WORK_STEP -> TD_WORK_STEP_GROUP;
}

neato рисует эту диаграмму лучше, но он не поддерживает кластеры. Есть ли где то, человеческий пример, который действительно работает? Или придется каждую диаграмму в ручную тюнить, расставля позицию для каждой таблички и выбирая, чем рисовать , dot или neato?

rank=same как бы намекает, что пользователь хочет выстроить ноды в одну линию.

dmitry_vk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.