Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shibukawa/md2sql
https://github.com/shibukawa/md2sql
erd erdiagram sql
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/shibukawa/md2sql
- Owner: shibukawa
- License: agpl-3.0
- Created: 2022-10-17T08:03:45.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-11-22T13:21:55.000Z (about 2 years ago)
- Last Synced: 2024-06-19T06:00:00.267Z (7 months ago)
- Topics: erd, erdiagram, sql
- Language: Go
- Homepage: https://shibukawa.github.io/md2sql/
- Size: 2.07 MB
- Stars: 18
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.ja.md
- License: LICENSE
Awesome Lists containing this project
README
# md2sql
MarkdownのリストからSQL/ERDを生成します。
```bash
$ go install github.com/shibukawa/md2sql...
```## サンプル
### シンプルなサンプル
* 全てのテーブルは"table: "プリフィックスを持つリストで表現します。
* カラムは"名前: 型"の形式で定義します。```md
* table: BasicTable
* id: integer
* name: string
``````bash
$ md2sql -f sql simple.md
```次のようなSQLが得られます。
```sql
CREATE TABLE BasicTable(
id INTEGER NOT NULL,
name TEXT NOT NULL
);
````-f plantuml`もしくは`-f mermaid`オプションをつけることで、PlantUMLおよびMermaid.js形式のERDが生成できます。
```plantuml
@startumlentity BasicTable {
--
*id:INTEGER
*name:TEXT
}@enduml
``````mermaid
erDiagramBasicTable {
INTEGER id
TEXT name
}
```### 基本的なサンプル
主キー、インデックス、外部キーも設定できます。
* 名前に`##`プリフィックスを付けるとプライマリーキーになります。型を省略するとオートインクリメントのフィールドになります。
* 名前に`#`プリフィックスを付けるとインデックスを付与します。
* 型に`*`プリフィックスを付けると外部キーになります。```md
* table: User
* ##id
* name: string
* #email: string
* age: integer
* job: *Job.id* table: Job
* ##id
* name: string
```次のようなSQLが得られます。
```sql
CREATE TABLE User(
id SERIAL,
name TEXT NOT NULL,
email TEXT NOT NULL,
age INTEGER NOT NULL,
job INTEGER NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(job) REFERENCES Job(id)
);CREATE UNIQUE INDEX INDEX_User_email ON User(email);
CREATE TABLE Job(
id SERIAL,
name TEXT NOT NULL,
PRIMARY KEY(id)
);
```### 連想エンティティ
`[]`サフィックスをつけることで[連想エンティティ](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)の指定ができます。
```
* table: User
* ##id
* name: string
* age: integer
* jobs: *Job.id[]* table: Job
* ##id
* name: string
```次のようなSQLが得られます。
```sql
CREATE TABLE User(
id SERIAL,
name TEXT NOT NULL,
age INTEGER NOT NULL,
PRIMARY KEY(id)
);CREATE TABLE Job(
id SERIAL,
name TEXT NOT NULL,
PRIMARY KEY(id)
);CREATE TABLE User_jobs(
id SERIAL PRIMARY KEY,
User_id INTEGER,
Job_id INTEGER,
FOREIGN KEY(User_id) REFERENCES User(id),
FOREIGN KEY(Job_id) REFERENCES Job(id)
);
```### ステレオタイプ
PlantUMLコード生成ではテーブルのステレオタイプが表現できます。7種類のステレオタイプがあります。
| ラベル | 意味 | マーク |
| ------------------------- | -------------------------------------- | ------ |
| `table:` | 汎用テーブル | **E** |
| `master:` | システムを表すテーブル | **M** |
| `tran:` or `transaction:` | アクティビティを表すテーブル | **T** |
| `summary:` | クエリーのキャッシュを保持するテーブル | **E** |
| `work:` | 一時テーブル | **W** |
| `view:` | ビュー | **V** |
| `associativeentity:` | 連想エンティティ | **A** |`-`(マイナス) か `_`(アンダースコア)を先頭につけると、従属テーブルを表します。
```md
* master: Users
* @id
* name: string
* age: integer
* jobs: *Job.id[]* -tran: Tests
* @user: Users.id
* @date: Date
* score: integer
```## ライセンス
AGPL