为该文档的代码画一个E-R图
时间: 2024-12-24 18:40:47 浏览: 2
根据提供的文档内容,以下是健身房系统的实体关系图(E-R图):
### 实体关系图(E-R Diagram)
#### 实体(Entities)
1. **会员 (Member)**
- 属性:
- `mid` (主键)
- `mname`
- `msex`
- `mbirthdate`
- `mphone`
2. **教练 (Trainer)**
- 属性:
- `tid` (主键)
- `tname`
- `tsex`
- `tbirthdate`
- `texpertise`
3. **课程 (Course)**
- 属性:
- `cid` (主键)
- `cname` (唯一)
- 属性:
- `eid` (主键)
- `mid` (外键,引用 `Member(mid)`)
- `cid` (外键,引用 `Course(cid)`)
- `edate`
5. **上课 (Class)**
- 属性:
- `class_id` (主键)
- `cid` (外键,引用 `Course(cid)`)
- `tid` (外键,引用 `Trainer(tid)`,级联删除)
- `class_date`
- `start_time`
- `end_time`
#### 关系(Relationships)
1. **会员 (Member)** 和 **报名 (Enrollment)**
- 一对多关系:一个会员可以报名多个课程。
- 外键:`Enrollment(mid) -> Member(mid)`
2. **课程 (Course)** 和 **报名 (Enrollment)**
- 一对多关系:一个课程可以有多个会员报名。
- 外键:`Enrollment(cid) -> Course(cid)`
3. **课程 (Course)** 和 **上课 (Class)**
- 一对多关系:一个课程可以有多个上课安排。
- 外键:`Class(cid) -> Course(cid)`
4. **教练 (Trainer)** 和 **上课 (Class)**
- 一对多关系:一个教练可以教授多个课程。
- 外键:`Class(tid) -> Trainer(tid)`,级联删除
### 图形表示
```
+----------------+ +----------------+ +----------------+
| Member | | Trainer | | Course |
|----------------| |----------------| |----------------|
| mid (PK) | | tid (PK) | | cid (PK) |
| mname | | tname | | cname (Unique) |
| msex | | tsex | | duration |
| mbirthdate | | tbirthdate | | capacity |
| mphone | | texpertise | +----------------+
+----------------+ +----------------+ ^ ^
| | | |
| | | |
| | | |
| | | |
| | | |
+--+ +----------------+ +----------------+
| Enrollment | | Class | | Class |
|--| |----------------| |----------------|
| eid (PK) | | class_id (PK) | | cid (FK) |
| mid (FK) | | cid (FK) | | tid (FK) |
| cid (FK) | | tid (FK) | | class_date |
| edate | | class_date | | start_time |
+--+ | start_time | | end_time |
| end_time | +----------------+
+----------------+
```
### 说明
- **PK** 表示主键。
- **FK** 表示外键。
- **Unique** 表示唯一约束。
这个E-R图清晰地展示了各个实体之间的关系以及它们的属性。希望这对你理解健身房系统的数据库设计有所帮助。
阅读全文