|
@@ -1,104 +1,176 @@
|
|
|
-# AI鸟类数据库结构
|
|
|
+# AIBirdDatabaseSchema
|
|
|
|
|
|
-## Region(地区表)
|
|
|
-- **基础字段**
|
|
|
- - objectId
|
|
|
- - createdAt
|
|
|
- - updatedAt
|
|
|
-- **信息字段**
|
|
|
+## Region
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
- name: String
|
|
|
- description: String
|
|
|
- climate: String
|
|
|
- terrain: String
|
|
|
- areaSize: Number
|
|
|
- bestSeason: String
|
|
|
-- **地理信息**
|
|
|
- - featureTags: Array<String>
|
|
|
+ - featureTags: Array\<String>
|
|
|
- centerLocation: GeoPoint
|
|
|
- mapImage: File
|
|
|
-- **统计字段**
|
|
|
- popularity: Number
|
|
|
+- **关系**
|
|
|
+ - 包含多个 `BirdRoute`
|
|
|
|
|
|
-## Bird(鸟类表)
|
|
|
-- **基础字段**
|
|
|
- - objectId
|
|
|
- - createdAt
|
|
|
- - updatedAt
|
|
|
-- **分类信息**
|
|
|
+## Bird
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
- name: String
|
|
|
- scientificName: String
|
|
|
- family: String
|
|
|
-- **特征描述**
|
|
|
- description: String
|
|
|
- - habitats: Array<String>
|
|
|
+ - habitats: Array\<String>
|
|
|
+ - conservationStatus: String
|
|
|
+ - seasons: Array\<String>
|
|
|
+ - image: File
|
|
|
- size: String
|
|
|
- color: String
|
|
|
-- **生态信息**
|
|
|
- - conservationStatus: String
|
|
|
- - seasons: Array<String>
|
|
|
- diet: String
|
|
|
-- **媒体**
|
|
|
- - image: File
|
|
|
+- **关系**
|
|
|
+ - 被多个 `UserObservation` 观察
|
|
|
+ - 出现在多个 `BirdRoute`
|
|
|
|
|
|
-## BirdRoute(观鸟路线表)
|
|
|
-- **基础字段**
|
|
|
- - objectId
|
|
|
- - createdAt
|
|
|
- - updatedAt
|
|
|
-- **基本信息**
|
|
|
+## BirdRoute
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
- name: String
|
|
|
- description: String
|
|
|
- - region: Pointer<Region>
|
|
|
-- **路线特征**
|
|
|
+ - region: Pointer\<Region>
|
|
|
- length: Number
|
|
|
- difficulty: Number
|
|
|
- estimatedTime: Number
|
|
|
- - pathPoints: Array<GeoPoint>
|
|
|
-- **观鸟信息**
|
|
|
- - commonBirds: Array<Pointer<Bird>>
|
|
|
- - bestMonths: Array<String>
|
|
|
-- **位置信息**
|
|
|
+ - pathPoints: Array\<GeoPoint>
|
|
|
+ - commonBirds: Array\<Pointer\<Bird>>
|
|
|
+ - bestMonths: Array\<String>
|
|
|
- startPoint: String
|
|
|
- endPoint: String
|
|
|
-- **评价信息**
|
|
|
- rating: Number
|
|
|
- - popularity: Number
|
|
|
-- **设施**
|
|
|
- - facilities: Array<String>
|
|
|
-- **媒体**
|
|
|
+ - facilities: Array\<String>
|
|
|
- routeImage: File
|
|
|
+ - popularity: Number
|
|
|
+- **关系**
|
|
|
+ - 属于一个 `Region`
|
|
|
+ - 有多个 `UserObservation`
|
|
|
+ - 有多个 `RouteReview`
|
|
|
+ - 被多个 `Post` 关联
|
|
|
|
|
|
-## UserObservation(用户观察记录)
|
|
|
-- **关联信息**
|
|
|
- - user: Pointer<User>
|
|
|
- - bird: Pointer<Bird>
|
|
|
- - route: Pointer<BirdRoute>
|
|
|
-- **观察数据**
|
|
|
+## UserObservation
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
+ - user: Pointer\<User>
|
|
|
+ - bird: Pointer\<Bird>
|
|
|
+ - route: Pointer\<BirdRoute>
|
|
|
- observationTime: Date
|
|
|
- location: GeoPoint
|
|
|
- weather: String
|
|
|
- notes: String
|
|
|
- - confidence: Number
|
|
|
-- **媒体**
|
|
|
- photo: File
|
|
|
+ - confidence: Number
|
|
|
+- **关系**
|
|
|
+ - 属于一个 `User`
|
|
|
+ - 观察一个 `Bird`
|
|
|
+ - 在一条 `BirdRoute`
|
|
|
|
|
|
-## RouteReview(路线评价表)
|
|
|
-- **关联信息**
|
|
|
- - user: Pointer<User>
|
|
|
- - route: Pointer<BirdRoute>
|
|
|
-- **评价内容**
|
|
|
+## RouteReview
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
+ - user: Pointer\<User>
|
|
|
+ - route: Pointer\<BirdRoute>
|
|
|
- rating: Number
|
|
|
- comment: String
|
|
|
- - tags: Array<String>
|
|
|
-- **观察数据**
|
|
|
+ - tags: Array\<String>
|
|
|
- visitDate: Date
|
|
|
- - birdsSeen: Array<Pointer<Bird>>
|
|
|
+ - birdsSeen: Array\<Pointer\<Bird>>
|
|
|
+- **关系**
|
|
|
+ - 由一个 `User` 撰写
|
|
|
+ - 评价一条 `BirdRoute`
|
|
|
+
|
|
|
+## User
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
+ - username: String
|
|
|
+ - email: String
|
|
|
+ - passwordHash: String
|
|
|
+ - avatar: File
|
|
|
+ - bio: String
|
|
|
+ - location: String
|
|
|
+ - joinDate: Date
|
|
|
+ - interests: Array\<String>
|
|
|
+ - observationCount: Number
|
|
|
+ - followerCount: Number
|
|
|
+ - followingCount: Number
|
|
|
+ - isVerified: Boolean
|
|
|
+- **关系**
|
|
|
+ - 创建多个 `UserObservation`
|
|
|
+ - 撰写多个 `RouteReview`
|
|
|
+ - 发布多个 `Post`
|
|
|
+ - 发表多个 `Comment`
|
|
|
+ - 有多个 `Favorite`
|
|
|
+
|
|
|
+## Post
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
+ - author: Pointer\<User>
|
|
|
+ - title: String
|
|
|
+ - content: String
|
|
|
+ - images: Array\<File>
|
|
|
+ - relatedBird: Pointer\<Bird>
|
|
|
+ - relatedRoute: Pointer\<BirdRoute>
|
|
|
+ - likes: Array\<Pointer\<User>>
|
|
|
+ - comments: Array\<Comment>
|
|
|
+ - tags: Array\<String>
|
|
|
+ - viewCount: Number
|
|
|
+ - isPinned: Boolean
|
|
|
+- **关系**
|
|
|
+ - 由一个 `User` 创建
|
|
|
+ - 关联一个 `Bird` (可选)
|
|
|
+ - 关联一条 `BirdRoute` (可选)
|
|
|
+ - 有多个 `Comment`
|
|
|
+ - 被多个 `User` 点赞
|
|
|
+
|
|
|
+## Comment
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
+ - author: Pointer\<User>
|
|
|
+ - post: Pointer\<Post>
|
|
|
+ - content: String
|
|
|
+ - likes: Array\<Pointer\<User>>
|
|
|
+ - replyTo: Pointer\<Comment>
|
|
|
+- **关系**
|
|
|
+ - 由一个 `User` 发表
|
|
|
+ - 属于一个 `Post`
|
|
|
+ - 回复另一个 `Comment` (可选)
|
|
|
+ - 被多个 `User` 点赞
|
|
|
|
|
|
-## 关系图
|
|
|
-```mermaid
|
|
|
-graph TD
|
|
|
- Region -->|contains| BirdRoute
|
|
|
- BirdRoute -->|has| UserObservation
|
|
|
- BirdRoute -->|has| RouteReview
|
|
|
- Bird -->|observed| UserObservation
|
|
|
- Bird -.->|found_in| BirdRoute
|
|
|
+## Favorite
|
|
|
+- **属性**
|
|
|
+ - objectId: String
|
|
|
+ - createdAt: Date
|
|
|
+ - updatedAt: Date
|
|
|
+ - user: Pointer\<User>
|
|
|
+ - bird: Pointer\<Bird>
|
|
|
+ - route: Pointer\<BirdRoute>
|
|
|
+ - addedAt: Date
|
|
|
+- **关系**
|
|
|
+ - 属于一个 `User`
|
|
|
+ - 收藏一个 `Bird` 或 `BirdRoute`
|