{"id":19716884,"url":"https://github.com/shibukawa/md2sql","last_synced_at":"2025-04-29T20:30:49.696Z","repository":{"id":61739570,"uuid":"552778060","full_name":"shibukawa/md2sql","owner":"shibukawa","description":null,"archived":false,"fork":false,"pushed_at":"2022-11-22T13:21:55.000Z","size":2171,"stargazers_count":18,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-05T19:05:25.086Z","etag":null,"topics":["erd","erdiagram","sql"],"latest_commit_sha":null,"homepage":"https://shibukawa.github.io/md2sql/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shibukawa.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-17T08:03:45.000Z","updated_at":"2024-05-25T14:52:44.000Z","dependencies_parsed_at":"2022-10-20T16:15:23.868Z","dependency_job_id":null,"html_url":"https://github.com/shibukawa/md2sql","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibukawa%2Fmd2sql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibukawa%2Fmd2sql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibukawa%2Fmd2sql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibukawa%2Fmd2sql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shibukawa","download_url":"https://codeload.github.com/shibukawa/md2sql/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251578297,"owners_count":21612010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erd","erdiagram","sql"],"created_at":"2024-11-11T22:43:56.518Z","updated_at":"2025-04-29T20:30:49.241Z","avatar_url":"https://github.com/shibukawa.png","language":"Go","readme":"# md2sql\n\nMarkdownのリストからSQL/ERDを生成します。\n\n```bash\n$ go install github.com/shibukawa/md2sql...\n```\n\n## サンプル\n\n### シンプルなサンプル\n\n* 全てのテーブルは\"table: \"プリフィックスを持つリストで表現します。\n* カラムは\"名前: 型\"の形式で定義します。\n\n```md\n* table: BasicTable\n  * id: integer\n  * name: string\n```\n\n```bash\n$ md2sql -f sql simple.md\n```\n\n次のようなSQLが得られます。\n\n```sql\nCREATE TABLE BasicTable(\n    id INTEGER NOT NULL,\n    name TEXT NOT NULL\n);\n```\n\n`-f plantuml`もしくは`-f mermaid`オプションをつけることで、PlantUMLおよびMermaid.js形式のERDが生成できます。\n\n```plantuml\n@startuml\n\nentity BasicTable {\n  --\n  *id:INTEGER\n  *name:TEXT\n}\n\n@enduml\n```\n\n```mermaid\nerDiagram\n\nBasicTable {\n  INTEGER id\n  TEXT name\n}\n```\n\n### 基本的なサンプル\n\n主キー、インデックス、外部キーも設定できます。\n\n* 名前に`##`プリフィックスを付けるとプライマリーキーになります。型を省略するとオートインクリメントのフィールドになります。\n* 名前に`#`プリフィックスを付けるとインデックスを付与します。\n* 型に`*`プリフィックスを付けると外部キーになります。\n\n```md\n* table: User\n    * ##id\n    * name: string\n    * #email: string\n    * age: integer\n    * job: *Job.id\n\n* table: Job\n    * ##id\n    * name: string\n```\n\n次のようなSQLが得られます。\n\n```sql\nCREATE TABLE User(\n    id SERIAL,\n    name TEXT NOT NULL,\n    email TEXT NOT NULL,\n    age INTEGER NOT NULL,\n    job INTEGER NOT NULL,\n    PRIMARY KEY(id),\n    FOREIGN KEY(job) REFERENCES Job(id)\n);\n\nCREATE UNIQUE INDEX INDEX_User_email ON User(email);\n\nCREATE TABLE Job(\n    id SERIAL,\n    name TEXT NOT NULL,\n    PRIMARY KEY(id)\n);\n```\n\n### 連想エンティティ\n\n`[]`サフィックスをつけることで[連想エンティティ](https://ja.wikipedia.org/wiki/%E9%80%A3%E6%83%B3%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3)の指定ができます。\n\n```\n* table: User\n    * ##id\n    * name: string\n    * age: integer\n    * jobs: *Job.id[]\n\n* table: Job\n    * ##id\n    * name: string\n```\n\n次のようなSQLが得られます。\n\n```sql\nCREATE TABLE User(\n    id SERIAL,\n    name TEXT NOT NULL,\n    age INTEGER NOT NULL,\n    PRIMARY KEY(id)\n);\n\nCREATE TABLE Job(\n    id SERIAL,\n    name TEXT NOT NULL,\n    PRIMARY KEY(id)\n);\n\nCREATE TABLE User_jobs(\n    id SERIAL PRIMARY KEY,\n    User_id INTEGER,\n    Job_id INTEGER,\n    FOREIGN KEY(User_id) REFERENCES User(id),\n    FOREIGN KEY(Job_id) REFERENCES Job(id)\n);\n```\n\n### ステレオタイプ\n\nPlantUMLコード生成ではテーブルのステレオタイプが表現できます。7種類のステレオタイプがあります。\n\n| ラベル                    | 意味                                   | マーク |\n| ------------------------- | -------------------------------------- | ------ |\n| `table:`                  | 汎用テーブル                           | **E**  |\n| `master:`                 | システムを表すテーブル                 | **M**  |\n| `tran:` or `transaction:` | アクティビティを表すテーブル           | **T**  |\n| `summary:`                | クエリーのキャッシュを保持するテーブル | **E**  |\n| `work:`                   | 一時テーブル                           | **W**  |\n| `view:`                   | ビュー                                 | **V**  |\n| `associativeentity:`      | 連想エンティティ                       | **A**  |\n\n\n`-`(マイナス) か `_`(アンダースコア)を先頭につけると、従属テーブルを表します。\n\n```md\n* master: Users\n    * @id\n    * name: string\n    * age: integer\n    * jobs: *Job.id[]\n\n* -tran: Tests\n    * @user: Users.id\n    * @date: Date\n    * score: integer\n```\n\n## ライセンス\n\nAGPL","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshibukawa%2Fmd2sql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshibukawa%2Fmd2sql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshibukawa%2Fmd2sql/lists"}