What’s Erviz?

Note
I’m in the process of forking Erviz. The fork is almost done. The Linux packages are prepared and almost ready to be submitted. (27. Sep 03:47 UTC)
————————

Erviz, written by Mitsuru Kono, is a tool that makes it easy to create entity-relation models and the best thing it’s free!

You can run it on Windows, Linux and Mac but for the latter a patch is required which will be discussed later on this page.

Creating the entity-relation diagram

Only these two steps have to be followed:

  1. Create a text file and define all your entities and relationships. The syntax is simple as example shows:

    
    # Using Erviz 1.0.6
    {title: "Syn2Stock ERD V3"; title-size: 20}
    
    # Entities
    
    [Item] {color:red}
     *Item ID
      Type
      SimpleItem
      Bar Code
      Name
      Amount
      Owner  
      Comment
      Attachments
      Sources
      Source ID*
      Location ID*
      Lending ID*
    
    [Source]
     *Source ID
      Price
      Homepage
      Manufacturer
    
    [Location]
     *Location ID
      GPS Coordinates
      Name
      Room
      Locker
    
    [Lending]
     *Lending ID
      Borrowed by
      Borrowed on
      Returned on
      Reminder ID*
    
    [Reminder]
     *Reminder ID
      Start Date
      Repeat Interval
      End Date
      Active
      Action
      Email
      Phone
      Message
      Item ID*
      Lending ID*
    
    [Event]
      *Event ID
      Event Type
      Date
      User
      Item ID*
    
    [Attachment]
     *Attachment ID
      File
      External URL
      Private
    
    [Electronic Part] {color:orange}
     *Electronic Part ID
      Value
      Item ID*
    
    [Book] {color:orange}
     *Book ID
      Subtitle
      Author
      Publisher
      Paperback
      Language
      Review
      Summary
      About the Author
      Item ID*
    
    # Relationships
    [Item] *--* [Source]
    [Item] 1--1 [Location]
    [Item] 1--* [Lending]
    [Item] *--* [Attachment]
    [Reminder] ---- [Item] 
    [Event] *--1 [Item] 
    [Electronic Part] ---- [Item] 
    [Book] ---- [Item] 
    
    
  2. Then turn the text file into the ERD image by calling the convert-files script.

Where do I get it?

Since I’m in the process of forking Erviz it will be rereleased on the new project page. In the meantime you can download the old but non-maintained version here:

erviz-1.0.6-bin


md5: dbfa20515118535c106032c8200163c6
sha256: 8f1fb3832eb33a1aef2f0a7b439949e9b132ee4ff73f5b18bea174dc1f7bd21e

erviz-1.0.6-src


md5: 90d8a9c7dc74b07cfb44484823ed0059
sha256: b9273fff329550951d57bcf201be85e5a9cfe0d1592bfc90077a2a385b274565

What else do I need?

Java 6 and Graphviz.

Apple doesn’t offer Java 6 or greater for 32-bit macs but fortunately there’s SoyLatte, a FreeBSD Java port which brings Java 6 back.

I wrote a script that installs it for you. Download the Java 6 Installer, extract the archive, open a Terminal and execute


chmod 755 install_java6.sh
./install_java6.sh

Graphviz can be downloaded from graphviz.org or install the macports package by executing


sudo port install graphviz

How do I install it?

Setup

Download and extract erviz. Its folder contains two setup files, one for windows and one for Linux/Unix/Mac.


localhome:erviz-1.0.6 slopjong$ ls -l
total 32
drwxr-xr-x@ 11 slopjong  admin   374 27 Jul  2010 _setup_
-rw-r--r--@  1 slopjong  admin    86 27 Jul  2010 readme_1st.txt
-rw-r--r--@  1 slopjong  admin  2449 27 Jul  2010 setup.cmd
-rw-r--r--@  1 slopjong  admin  2853 27 Jul  2010 setup.sh

The next step is linux/unix/mac specific so have a look at the readme file to see how it’s done on windows.

Change the file permission to 755 and launch the setup script.


localhome:erviz-1.0.6 slopjong$ chmod 755 setup.sh 
localhome:erviz-1.0.6 slopjong$ ./setup.sh 

It asks you if you want to install the English or Japanese version. Type in 1 or 2.


Select language number. (Enter 'q' to quit.)

1: English
2: Japanese

-n Language: 
1
copying... [./_setup_/common/bin/*] -> [./bin/*]
copying... [./_setup_/common/html-docs/*] -> [./html-docs/*]
copying... [./_setup_/common/work/*] -> [./work/*]
copying... [./_setup_/unix/bin/*] -> [./bin/*]
copying... [./_setup_/en/docs/*] -> [./docs/*]
copying... [./_setup_/en/work/*] -> [./work/*]
copying... [./_setup_/en-unix/bin/*] -> [./bin/*]
copying... [./_setup_/en-unix/work/*] -> [./work/*]
permission changing... [./bin/*.sh]
permission changing... [./work/scripts/*.sh]
copying... [./work/scripts/text2png-ie.sh] -> [./work/text2png-ie.sh]
copying... [./work/scripts/text2png-idef1x.sh] -> [./work/text2png-idef1x.sh]
moving... [./docs/readme.txt] -> [./readme.txt]

Completed

See ./readme.txt

On windows and Linux you’re done. Mac users must patch as described next.

Patching

Download this patch file and extract it into your erviz installation folder. Change into the bin directory and simulate the patching with the option –dry-run to see if the patch will work for you.


localhome:erviz-1.0.6 slopjong$ cd bin/
localhome:bin slopjong$ patch --dry-run -p1 -i ../erviz.patch 

If you get the following output the patch would have worked.


patching file convert-files.sh
patching file erviz.sh
patching file messages.sh

Now run the patch again but without the –dry-run option this time.


localhome:bin slopjong$ patch -p1 -i ../erviz.patch 
patching file convert-files.sh
patching file erviz.sh
patching file messages.sh

Patch done. Wasn’t this easy?

How do I use it?

After you wrote your model (or copied it from above) you translate it into layered drawings of directed graphs by executing


./erviz.sh -i your_model.txt -o graph.dot

your_model.txt is the input file and the result of this script will be written into graph.dot. This will be the input file for the other script.


./convert-files.sh graph.dot

You should get graph.png, your ERD image.

10 Comments

  1. Ralph Corderoy

    Erviz looks very nice but the author’s site seems to have disappeared; you are now the prime source of the program. If anyone knows of an up to date URL for Mitsuru Kono please post here.

  2. slopjong

    When I wrote this article I dropped him a message that there’s a patch for mac os available on my blog but I never got a reply. Let’s wish that he’s fine.

  3. slopjong

    Erviz will be rereleased under a new name since the old Erviz project obviously died. I’ve made the new version more user-friendly but no extra features were added.

    If you have some wishes, drop me a message here.

  4. Gabriel Andrade

    Nice initiative! Erviz is such a nice tool. I’m working on a Perl port and hope we can get this together and deliver erviz in many flavors. : )

  5. Andreas

    Erviz is indeed a great tool! I already used it for several projects. Do you still plan to put it on a platform like github or bitbucket? Would be nice. I could also support you in this.

  6. slopjong

    Huh, I’m very surprised that there were and still are active users. Recently I’ve already thought of working on erviz again so you’ll be the reason that I get off my tush.

  7. Jeff Kassel

    Hi slopjong, your tool works great but missing a way i can map a field on one entity to a field in another entity. the connection lines just point to the entity, not the field.

  8. Hi Jeff, I wouldn’t expect them to connect fields. What’s the relationship you’re trying to represent by such a line? It provides crow’s foot notation.

  9. monika

    Hi,
    Thanks for a great tool. May I kno how can I modify the code of Erviz, to actually add tow columns instead on one in Entity box. I ant to add Attributes-name|Values.
    Will that be possible using the present code?
    Let me know.
    Thanks a lot.
    Monika

  10. monika

    My keyboard has problem with tryping ‘W’. Corrected question again .

    Hi,
    Thanks for a great tool. May I know how can I modify the code of Erviz, to actually add two columns instead on one in Entity box. I want to add Attributes-name|Values.
    Will that be possible using the present code?
    Let me know.
    Thanks a lot.
    Monika

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>