# ER図

## 概要

本ドキュメントは、oh-my-zshプロジェクトのエンティティ関係図（ER図）を記載するものです。

**重要**: oh-my-zshプロジェクトはデータベースを使用しないシェル設定フレームワークであるため、従来のデータベースER図は存在しません。代わりに、プロジェクトの主要な構成要素とその関係を示す概念図を以下に記載します。

## ファイル構造関係図

```mermaid
erDiagram
    OH_MY_ZSH ||--o{ PLUGINS : contains
    OH_MY_ZSH ||--o{ THEMES : contains
    OH_MY_ZSH ||--o{ LIB_FILES : contains
    OH_MY_ZSH ||--|| CUSTOM_DIR : has

    CUSTOM_DIR ||--o{ CUSTOM_PLUGINS : contains
    CUSTOM_DIR ||--o{ CUSTOM_THEMES : contains
    CUSTOM_DIR ||--o{ CUSTOM_CONFIGS : contains

    USER_CONFIG ||--|| ZSHRC : "defined in"
    USER_CONFIG ||--o{ ENABLED_PLUGINS : selects
    USER_CONFIG ||--|| SELECTED_THEME : selects

    ENABLED_PLUGINS }o--|| PLUGINS : "references"
    ENABLED_PLUGINS }o--|| CUSTOM_PLUGINS : "references"
    SELECTED_THEME }o--|| THEMES : "references"
    SELECTED_THEME }o--|| CUSTOM_THEMES : "references"

    OH_MY_ZSH {
        string install_path "~/.oh-my-zsh"
        string version "master"
    }

    PLUGINS {
        string name "plugin name"
        string path "plugins/{name}"
        string readme "README.md"
        string plugin_file "{name}.plugin.zsh"
    }

    THEMES {
        string name "theme name"
        string path "themes/{name}.zsh-theme"
    }

    LIB_FILES {
        string name "library name"
        string path "lib/{name}.zsh"
    }

    CUSTOM_DIR {
        string path "custom/"
    }

    CUSTOM_PLUGINS {
        string name "custom plugin name"
        string path "custom/plugins/{name}"
    }

    CUSTOM_THEMES {
        string name "custom theme name"
        string path "custom/themes/{name}.zsh-theme"
    }

    CUSTOM_CONFIGS {
        string name "config name"
        string path "custom/*.zsh"
    }

    USER_CONFIG {
        string ZSH_THEME "selected theme"
        array plugins "enabled plugins"
        string ZSH "install path"
    }

    ZSHRC {
        string path "~/.zshrc"
    }

    ENABLED_PLUGINS {
        string plugin_name "plugin identifier"
    }

    SELECTED_THEME {
        string theme_name "theme identifier"
    }
```

## 構成要素の説明

### 主要エンティティ

| エンティティ | 説明 |
| --- | --- |
| OH_MY_ZSH | oh-my-zshのメインインストールディレクトリ |
| PLUGINS | 組み込みプラグインのコレクション（350+個） |
| THEMES | 組み込みテーマのコレクション（140+個） |
| LIB_FILES | コアライブラリファイル群 |
| CUSTOM_DIR | ユーザーカスタマイズ用ディレクトリ |
| USER_CONFIG | ユーザー設定（.zshrcで定義） |

### 関係の説明

| 関係 | 説明 |
| --- | --- |
| OH_MY_ZSH - PLUGINS | oh-my-zshは複数のプラグインを含む |
| OH_MY_ZSH - THEMES | oh-my-zshは複数のテーマを含む |
| USER_CONFIG - ENABLED_PLUGINS | ユーザーは複数のプラグインを有効化できる |
| USER_CONFIG - SELECTED_THEME | ユーザーは1つのテーマを選択する |
| ENABLED_PLUGINS - PLUGINS/CUSTOM_PLUGINS | 有効化されたプラグインは組み込みまたはカスタムプラグインを参照 |

## データベースが存在しない理由

oh-my-zshがデータベースを使用しない理由：

1. **ファイルベースの設計**: シェル設定は本質的にテキストファイルで管理される
2. **依存性の最小化**: 外部サービスやデータベースへの依存を排除
3. **移植性**: 設定ファイルのコピーのみで環境移行が可能
4. **シンプルさ**: UNIX哲学に基づいたシンプルな設計

## 備考

本ER図は、データベース設計ではなく、oh-my-zshプロジェクトのファイル構造とその論理的な関係を視覚化したものです。実際のデータ永続化はすべてファイルシステム上のテキストファイルとして行われます。
