2017年10月15日日曜日

ER図をテキストから作成するhaskell製ツールのerd すげぇー

こういうの探してた


綺麗に図を作ってくれるツールを使ってみました。

gentooならこれでいれて、いちようgentoo-haskellに投下しておきましたのでそのうち使えるようになると思います。

ugui7 ~ # emerge dev-haskell/erd

使い方


オフィシャルに書いてあるとおりのまんま、
ER図の元になるファイルを作る、sample.erってファイル名で保存する。

title {label: "nfldb Entity-Relationship diagram (condensed)", size: "20"}

# Entities

[player] {bgcolor: "#d0e0d0"}
  *player_id {label: "varchar, not null"}
  full_name {label: "varchar, null"}
  team {label: "varchar, not null"}
  position {label: "player_pos, not null"}
  status {label: "player_status, not null"}

[team] {bgcolor: "#d0e0d0"}
  *team_id {label: "varchar, not null"}
  city {label: "varchar, not null"}
  name {label: "varchar, not null"}

[game] {bgcolor: "#ececfc"}
  *gsis_id {label: "gameid, not null"}
  start_time {label: "utctime, not null"}
  week {label: "usmallint, not null"}
  season_year {label: "usmallint, not null"}
  season_type {label: "season_phase, not null"}
  finished {label: "boolean, not null"}
  home_team {label: "varchar, not null"}
  home_score {label: "usmallint, not null"}
  away_team {label: "varchar, not null"}
  away_score {label: "usmallint, not null"}

[drive] {bgcolor: "#ececfc"}
  *+gsis_id {label: "gameid, not null"}
  *drive_id {label: "usmallint, not null"}
  start_field {label: "field_pos, null"}
  start_time {label: "game_time, not null"}
  end_field {label: "field_pos, null"}
  end_time {label: "game_time, not null"}
  pos_team {label: "varchar, not null"}
  pos_time {label: "pos_period, null"}

[play] {bgcolor: "#ececfc"}
  *+gsis_id {label: "gameid, not null"}
  *+drive_id {label: "usmallint, not null"}
  *play_id {label: "usmallint, not null"}
  time {label: "game_time, not null"}
  pos_team {label: "varchar, not null"}
  yardline {label: "field_pos, null"}
  down {label: "smallint, null"}
  yards_to_go {label: "smallint, null"}

[play_player] {bgcolor: "#ececfc"}
  *+gsis_id {label: "gameid, not null"}
  *+drive_id {label: "usmallint, not null"}
  *+play_id {label: "usmallint, not null"}
  *+player_id {label: "varchar, not null"}
  team {label: "varchar, not null"}

[meta] {bgcolor: "#fcecec"}
  version {label: "smallint, null"}
  season_type {label: "season_phase, null"}
  season_year {label: "usmallint, null"}
  week {label: "usmallint, null"}

# Relationships

player      *--1 team
game        *--1 team {label: "home"}
game        *--1 team {label: "away"}
drive       *--1 team
play        *--1 team
play_player *--1 team

game        1--* drive
game        1--* play
game        1--* play_player

drive       1--* play
drive       1--* play_player

play        1--* play_player

player      1--* play_player


それから、erdコマンドで吐き出す、「-o」オプションで出力ファイルを指定する、ファイルの拡張子をみて出力するファイルを変換してくれる。ちょっと適当に調べて見たところ「pdf」「png」「svg」とかも出てくる、ちなみに漢字もlabelの中ならいけるっぽい。
cuomo@ugui7 ~ $ erd -i sample.er -o simple.svg

出力はこんな綺麗


すごく見やすく出力してくれる、自動でテーブル配置とかリレーション情報を出力してくれる。


しばらく使ってみようかと思う。

オフィシャル


erd
Translates a plain text description of a relational database schema to a graphical entity-relationship diagram.

0 件のコメント:

コメントを投稿