# ER図

## 概要

本ドキュメントは、F#コンパイラプロジェクト（dotnet/fsharp）のER図（Entity-Relationship図）です。

本プロジェクトはコンパイラツールであり、データベースを使用していないため、**ER図は該当しません**。

## ER図

```mermaid
erDiagram
    %% 本プロジェクトはデータベースを使用していないため、
    %% 従来のER図は存在しません。
    %%
    %% 以下は参考として、コンパイラ内部で使用される
    %% 主要なデータ構造間の概念的な関係を示します。

    SOURCE_FILE ||--o{ SYNTAX_TREE : "パースされる"
    SYNTAX_TREE ||--o{ TYPED_TREE : "型検査される"
    TYPED_TREE ||--o{ IL_MODULE : "コード生成される"
    IL_MODULE ||--o{ ASSEMBLY : "出力される"

    PROJECT ||--|{ SOURCE_FILE : "含む"
    PROJECT ||--o{ REFERENCE : "参照する"

    SOURCE_FILE {
        string path "ファイルパス"
        string content "ソースコード"
    }

    SYNTAX_TREE {
        string name "モジュール名"
        object ast "抽象構文木"
    }

    TYPED_TREE {
        string name "モジュール名"
        object typedAst "型付き構文木"
        object types "型情報"
    }

    IL_MODULE {
        string name "モジュール名"
        bytes ilCode "IL命令"
        object metadata "メタデータ"
    }

    ASSEMBLY {
        string name "アセンブリ名"
        string version "バージョン"
        bytes binary "バイナリ"
    }

    PROJECT {
        string name "プロジェクト名"
        string targetFramework "ターゲットフレームワーク"
    }

    REFERENCE {
        string name "参照名"
        string path "パス"
    }
```

## 説明

上記の図は、データベーステーブル間の関係を示すER図ではなく、F#コンパイラ内部で使用されるデータ構造間の概念的な関係を示したものです。

### エンティティの説明

| エンティティ | 説明 |
| --- | --- |
| SOURCE_FILE | F#ソースコードファイル |
| SYNTAX_TREE | パース後の抽象構文木（AST） |
| TYPED_TREE | 型検査・型推論後の型付き構文木 |
| IL_MODULE | .NET中間言語（IL）モジュール |
| ASSEMBLY | 出力されるコンパイル済みアセンブリ |
| PROJECT | F#プロジェクト定義 |
| REFERENCE | 外部アセンブリ参照 |

### リレーションシップの説明

| 関係 | 説明 |
| --- | --- |
| SOURCE_FILE → SYNTAX_TREE | ソースファイルがパースされて構文木になる |
| SYNTAX_TREE → TYPED_TREE | 構文木が型検査されて型付き構文木になる |
| TYPED_TREE → IL_MODULE | 型付き構文木からILコードが生成される |
| IL_MODULE → ASSEMBLY | ILモジュールがアセンブリとして出力される |
| PROJECT → SOURCE_FILE | プロジェクトは複数のソースファイルを含む |
| PROJECT → REFERENCE | プロジェクトは外部アセンブリを参照する |

## 備考

これらのデータ構造はすべてインメモリで処理され、コンパイル完了後は破棄されます。永続的なデータベースストレージは使用されていません。
