소스 인벤토리 구조 분석 (iss-bfacccaabbd5)
This commit is contained in:
parent
8026c9ea4f
commit
c41d2d2523
1 changed files with 78 additions and 0 deletions
78
source-inventory/DB_SCHEMA.md
Normal file
78
source-inventory/DB_SCHEMA.md
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Database Schema
|
||||||
|
|
||||||
|
## Entity: User
|
||||||
|
|
||||||
|
### Table Definition
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE users (
|
||||||
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
username VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
email VARCHAR(100) NOT NULL UNIQUE,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Column Details
|
||||||
|
|
||||||
|
| Column | Type | Constraints | Description |
|
||||||
|
|--------|------|-------------|-------------|
|
||||||
|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | Unique identifier |
|
||||||
|
| username | VARCHAR(50) | NOT NULL, UNIQUE | User's unique username |
|
||||||
|
| email | VARCHAR(100) | NOT NULL, UNIQUE | User's email address |
|
||||||
|
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | Record creation time |
|
||||||
|
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE | Last update time |
|
||||||
|
|
||||||
|
### Indexes
|
||||||
|
|
||||||
|
| Index Name | Column | Type | Description |
|
||||||
|
|------------|--------|------|-------------|
|
||||||
|
| idx_username | username | UNIQUE | Fast username lookup |
|
||||||
|
| idx_email | email | UNIQUE | Fast email lookup |
|
||||||
|
|
||||||
|
### Entity Relationships
|
||||||
|
|
||||||
|
```
|
||||||
|
User (standalone entity, no foreign keys)
|
||||||
|
```
|
||||||
|
|
||||||
|
### JPA Entity Mapping
|
||||||
|
|
||||||
|
```java
|
||||||
|
@Entity
|
||||||
|
@Table(name = "users")
|
||||||
|
public class User {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(nullable = false, unique = true, length = 50)
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
@Column(nullable = false, unique = true, length = 100)
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@Column(name = "created_at", updatable = false)
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
|
@Column(name = "updated_at")
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Database Support
|
||||||
|
|
||||||
|
| Environment | Database | Driver |
|
||||||
|
|-------------|----------|--------|
|
||||||
|
| Development | H2 (In-Memory) | org.h2.Driver |
|
||||||
|
| Test | H2 (In-Memory) | org.h2.Driver |
|
||||||
|
| Production | MySQL 8.x | com.mysql.cj.jdbc.Driver |
|
||||||
|
| Production | PostgreSQL 15+ | org.postgresql.Driver |
|
||||||
|
|
||||||
|
### Migration Strategy
|
||||||
|
|
||||||
|
- **Development**: Auto DDL (Hibernate)
|
||||||
|
- **Production**: Flyway Migration Scripts
|
||||||
|
- Location: `src/main/resources/db/migration/`
|
||||||
|
- Naming: `V{version}__{description}.sql`
|
||||||
Loading…
Add table
Add a link
Reference in a new issue