# HR Portal 資料庫設計 ## 📋 Schema 版本 - **版本**: v2.0 - **創建日期**: 2026-02-10 - **設計依據**: [員工多身份設計文件.md](../../../2.專案設計區/4.HR_Portal/員工多身份設計文件.md) --- ## 🗂️ 資料表結構 ### 核心表格 1. **employees** - 員工基本資料 2. **business_units** - 事業部 3. **departments** - 部門 4. **employee_identities** - 員工身份 (多對多關係) 5. **network_drives** - 網路硬碟 (一對一關係) 6. **audit_logs** - 審計日誌 ### 關聯圖 ``` employees (員工) │ ├──< employee_identities (身份) ──> business_units (事業部) │ ──> departments (部門) │ └──< network_drives (NAS 帳號) ``` --- ## 🚀 快速開始 ### 方法一: Docker Compose (推薦) ```bash # 進入 database 目錄 cd W:\DevOps-Workspace\3.Develop\4.HR_Portal\database # 啟動資料庫 docker-compose up -d # 執行測試腳本 docker-compose exec postgres psql -U hr_admin -d hr_portal -f /test_schema.sql # 或從本地執行 docker exec -i hr-portal-db-test psql -U hr_admin -d hr_portal < test_schema.sql ``` 詳細測試說明請參考 [TESTING.md](./TESTING.md) ### 方法二: 本地 PostgreSQL ```bash # 1. 創建資料庫 createdb hr_portal # 或使用 psql psql -U postgres -c "CREATE DATABASE hr_portal;" # 2. 執行 Schema psql -U postgres -d hr_portal -f schema.sql # 3. 執行測試 psql -U postgres -d hr_portal -f test_schema.sql ``` ### 驗證 ```bash # 檢查表格 psql -U postgres -d hr_portal -c "\dt" # 檢查視圖 psql -U postgres -d hr_portal -c "\dv" # 查看初始資料 psql -U postgres -d hr_portal -c "SELECT * FROM business_units;" ``` --- ## 📝 重要設計概念 ### 員工多身份 一個員工 (`employees`) 可以有多個身份 (`employee_identities`),每個身份對應一個事業部: - **同事業部多部門**: 共用一個 SSO 帳號 - **跨事業部**: 獨立的 SSO 帳號 ### SSO 帳號命名 ``` 格式: {username_base}@{email_domain} 範例: - porsche.chen@lab.taipei (智能發展部) - porsche.chen@ease.taipei (業務發展部) - porsche.chen@porscheworld.tw (營運管理部) ``` ### NAS 帳號 - 一個員工只有一個 NAS 帳號 - 帳號名稱 = `username_base` - 配額由最高職級決定 --- ## 🔧 開發工具 ### Docker Compose 提供完整的測試環境,包含 PostgreSQL 16 和 pgAdmin 4。 **啟動**: ```bash docker-compose up -d ``` **訪問 pgAdmin**: http://localhost:5050 - Email: admin@lab.taipei - Password: admin **資料庫連線資訊**: - Host: postgres (Docker 內部) / localhost (外部) - Port: 5433 (外部) / 5432 (內部) - Database: hr_portal - User: hr_admin - Password: hr_dev_password_2026 ### 測試腳本 提供完整的測試腳本 `test_schema.sql`,包含: - 表格結構驗證 - 外鍵約束測試 - 唯一約束測試 - 索引檢查 - 模擬資料插入 詳見 [TESTING.md](./TESTING.md) ### 遷移工具 建議使用 Alembic 進行資料庫遷移管理。 --- ## 📖 相關文檔 - [TESTING.md](./TESTING.md) - 資料庫測試指南 - [員工多身份設計文件](../../../2.專案設計區/4.HR_Portal/員工多身份設計文件.md) - [HR Portal 設計文件](../../../2.專案設計區/4.HR_Portal/HR Portal設計文件.md) ## 📂 檔案清單 - `schema.sql` - 資料庫 Schema (v2.0) - `test_schema.sql` - 測試腳本 - `docker-compose.yml` - Docker 測試環境 - `TESTING.md` - 測試指南 - `README.md` - 本文件