Оптимальное расположение точек / GraphViz для схемы DB графа - PullRequest
6 голосов
/ 19 июля 2011

Я впервые использую dot + GraphViz, чтобы помочь в планировании схемы БД графа.

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

Я пробовал некоторые базовые рейтинги, но не смог на них сильно повлиять.

Как получить более четкий вывод?

Код:

digraph ReferenceGraph {
  nodesep = 2;
  edge [color=gray50, fontname=Calibri, fontsize=11]
  node [shape=record, fontname=Calibri, fontsize=11]

  root [label="Reference Node", color=darkgreen, fontcolor=darkgreen, fontname=Calibri, fontsize=11]

  sue [label="{{User}|{GivenName=Sue}|{FamilyName=Williams}|{Username=swilliams}|{EmailAddress=Sue.Williams@foo.com}|{BusinessPhone=02 1234 5678}|{MobilePhone=0414 123 456}|{PasswordSalt=fcd376dc}|{PasswordHash=a8635cfd2930ebc0cc78}|{PreviousPasswordSalt=gggf6dc}|{PreviousPasswordHash=wer435cfd2930ebc0cc78}|{RequirePasswordChangeOnNextLogin=true}|FailedLoginAttempts=0|LastLoginAttemptUtc=21 Jun 2011 16:43:01 UTC|{DateCreatedUtc=20 Jun 2011 15:43:07 UTC}}", color=blue, fontcolor=blue]
  sue -> root [label="ADMINISTERS"]

  clint [label="{{Client}|{UniqueId=100}|{GivenName=Clint}|{MiddleNames=ian bill}|{FamilyName=Wood}|{PreferredName=Woods}|{Gender=Male Female Unknown}|{PlaceOfBirthTown}|{PlaceOfBirthState}|{PlaceOfBirthCountry}|{Email=clint.wood@foo.com}|{LanguageComments}|{InterpreterRequired=true false}|{InterpreterComments}|{Religion=Buddhist}|{LegalOrders=order1}|{DateOfBirth=21 June 1979}|{DateOfBirthCertainty=Confirmed Unconfirmed Estimated}}", color=blue, fontcolor=blue]
  clint -> acme [label="CLIENT_BELONGS_TO"]
  clint -> english [label ="SPEAKS"]

  cat [label="Cat (Client)"]
  cat -> acme [label="CLIENT_BELONGS_TO"]
  cat -> english [label ="SPEAKS"]
  cat -> mandarin [label ="SPEAKS"]

  acme [label="{{Agency}|{UniqueId=100}|{Key=acme}|{Name=Acme Australia}}", color=blue, fontcolor=blue]
  root -> acme [label="HOSTS"]

  john [label="John (User)"]
  john -> acme [label="USER_BELONGS_TO"]

  jack [label="Jack (User)"]
  jack -> acme [label="USER_BELONGS_TO"]

  centreA [label="{{Centre}|{Name=CentreA}|{BusinessPhone=02 1234 5678}|{Fax=0414 123 456}|{Email=xyz@bcb.com}|{Status=Active}}", color=blue, fontcolor=blue]
  centreA -> acme [label="CENTRE_BELONGS_TO"]

  centreAStreetAddress [label="{{PhysicalAddress}|{Line 1=Level 1}|{Line 2=11 Sydney Road}|{TownSuburb=Sydney}|{State=NSW}|{Postcode=2000}|{Country=Australia}}", color=blue, fontcolor=blue]
  centreA -> centreAStreetAddress [label="HAS_STREET_ADDRESS"]

  centreAPostalAddress [label="PO Box 123 (PhysicalAddress)"]
  centreA -> centreAPostalAddress [label="HAS_POSTAL_ADDRESS"]

  clintCurrentAddress [label="{{CurrentAddress}|{Line 1=Level 1}|{Line 2=11 Sydney Road}|{TownSuburb=Sydney}|{State=NSW}|{Postcode=2000}|{Country=Australia}}", color=blue, fontcolor=blue]
  clint -> clintCurrentAddress [label="HAS_STREET_ADDRESS"]

  referenceData [label="Reference Data"]
  root -> referenceData [label="HAS_REFERENCE_DATA"]

  languagesReferenceData [label="Languages"]
  referenceData -> languagesReferenceData [label="HAS_LANGUAGES"]

  english [label="{{Language}|{Name=English}}", color=blue, fontcolor=blue]
  languagesReferenceData -> english [label="HAS_LANGUAGE"]

  mandarin [label="Mandarin (Language)"]
  languagesReferenceData -> mandarin [label="HAS_LANGUAGE"]

  japanese [label="Japanese (Language)"]
  languagesReferenceData -> japanese [label="HAS_LANGUAGE"]

  countriesReferenceData [label="Countries"]
  referenceData -> countriesReferenceData [label="HAS_COUNTRIES"]

  australia [label="{{Country}|{Name=Australia}}", color=blue, fontcolor=blue]
  countriesReferenceData -> australia [label="HAS_COUNTRY"]

  china [label="China (Country)"]
  countriesReferenceData -> china[label="HAS_COUNTRY"]
}

1 Ответ

7 голосов
/ 19 июля 2011

Вы можете попробовать добавить

splines=true;
overlap=prism;

вместо nodesep=2; и визуализировать график с neato вместо dot .Это приведет к более компактной компоновке. Тем не менее, метки перекрываются с некоторыми узлами, а основанные на записях узлы очень близко расположены друг к другу.- почти всегда будут некоторые пересекающиеся края, которые можно было бы выложить лучше.Выложенная вручную схема БД превзойдет вывод графика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...