# データベース設計書

## 概要

本ドキュメントは、F#コンパイラプロジェクト（dotnet/fsharp）のデータベース設計書です。

本プロジェクトはF#コンパイラ、F#コアライブラリ、およびF#エディタツールを提供するコンパイラプロジェクトであり、**データベースを使用していません**。コンパイラはソースコードファイルを入力として受け取り、コンパイル済みバイナリを出力するツールであり、永続的なデータストアとしてのデータベースは設計上不要です。

## プロジェクト特性

本プロジェクトが有するデータ処理の特性を以下に示します。

### 入力データ
- F#ソースコードファイル（.fs, .fsx）
- プロジェクトファイル（.fsproj）
- 設定ファイル（.config, Directory.Build.props等）

### 出力データ
- コンパイル済みアセンブリ（.dll, .exe）
- 中間言語（IL）
- デバッグ情報（.pdb）
- XMLドキュメント

### データ処理方式
- ファイルベースI/O
- インメモリデータ構造（構文木、型情報等）
- ストリーミング処理

## テーブル一覧

| テーブル名 | 対応エンティティ | 説明 |
| --- | --- | --- |
| （該当なし） | - | 本プロジェクトはデータベースを使用していません |

## 各テーブル定義

該当なし

## 備考

### 関連するデータ構造

本プロジェクトではデータベースの代わりに、以下のようなインメモリデータ構造を使用してコンパイル処理を行います。

1. **抽象構文木（AST）**: ソースコードのパース結果を表現
2. **型付き構文木（Typed Tree）**: 型推論後の構文木
3. **IL（Intermediate Language）**: .NET共通中間言語表現
4. **シンボルテーブル**: 識別子と型情報のマッピング

これらはコンパイル処理の間だけメモリ上に存在し、処理完了後は破棄されます。

### データ永続化が必要な場合

F#コンパイラサービス（FCS）を使用するアプリケーション（IDE等）では、以下のようなキャッシュ機構が存在します。

- インクリメンタルコンパイルのためのキャッシュ
- プロジェクト参照の解決キャッシュ
- アセンブリメタデータのキャッシュ

これらはすべてインメモリキャッシュまたはファイルシステムベースのキャッシュとして実装されており、データベースは使用されていません。
