воскресенье, 22 января 2012 г.

простая db schema c помощью graphviz

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

Кому то возможно удобнее открыть что то типа Draw и наваять там.
Но я предпочитаю graphviz, по следующим причинам:

  1. Ненавижу мышиную возню. таскать эти квадратики , рисовать стрелочки, выравнивать руками.
  2. Предпочитаю plain text формат хранения , который хранится рядом с кодом в vcs, диффы которого понятны на взгляд. Где что добавили, когда. 
  3. Получить c помощью graphviz любой графический формат, хоть растровый , хоть векторный, вывести на печать - задачи тривиальные.
Короткий листинг, шпаргалка для себя, как делать такие простейшие схемы:


digraph G {
    graph [rankdir="LR"];
    node [fontsize = "14" style=bold];
    Customers [label="Customers | <CustomerID> CustomerID| email | ... " shape="record"];
    Orders [label="Orders | <OrderID> OrderID | <CustomerID> CustomerID|  Date | Amount | ... " shape="record"];
    OrderDetails [label="OrderDetails | <OrderID> OrderID | <pid> ProductID | Count | ... " shape="record"];
    Products [label="<tb> Products | <pid> ProductID | Name | Description | ... " shape="record"];
    Orders:CustomerID-> Customers:CustomerID;
    OrderDetails:OrderID-> Orders:OrderID;
    OrderDetails:pid-> Products:pid;
    label="DB Schema";
    fontsize="20";
}   
Результат: