悦 陈 2 days ago
parent
commit
288e420571
2 changed files with 209 additions and 65 deletions
  1. 137 65
      docs/info-map.md
  2. 72 0
      docs/schema.md

+ 137 - 65
docs/info-map.md

@@ -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`

+ 72 - 0
docs/schema.md

@@ -120,12 +120,80 @@ class RouteReview {
   +Date visitDate
   +Array<Pointer<Bird>> birdsSeen
 }
+class User {
+  +String objectId
+  +Date createdAt
+  +Date updatedAt
+  
+  +String username
+  +String email
+  +String passwordHash
+  +File avatar
+  +String bio
+  +String location
+  +Date joinDate
+  +Array<String> interests
+  +Number observationCount
+  +Number followerCount
+  +Number followingCount
+  +Boolean isVerified
+}
+
+class Post {
+  +String objectId
+  +Date createdAt
+  +Date updatedAt
+  
+  +Pointer<User> author
+  +String title
+  +String content
+  +Array<File> images
+  +Pointer<Bird> relatedBird
+  +Pointer<BirdRoute> relatedRoute
+  +Array<Pointer<User>> likes
+  +Array<Comment> comments
+  +Array<String> tags
+  +Number viewCount
+  +Boolean isPinned
+}
+
+class Comment {
+  +String objectId
+  +Date createdAt
+  +Date updatedAt
+  
+  +Pointer<User> author
+  +Pointer<Post> post
+  +String content
+  +Array<Pointer<User>> likes
+  +Pointer<Comment> replyTo
+}
+
+class Favorite {
+  +String objectId
+  +Date createdAt
+  +Date updatedAt
+  
+  +Pointer<User> user
+  +Pointer<Bird> bird
+  +Pointer<BirdRoute> route
+  +Date addedAt
+}
 
 Region "1" -- "*" BirdRoute : contains
 BirdRoute "1" -- "*" UserObservation : has
 BirdRoute "1" -- "*" RouteReview : has
 Bird "1" -- "*" UserObservation : observed
 Bird "n" -- "m" BirdRoute : found_in
+User "1" -- "*" UserObservation : makes
+User "1" -- "*" RouteReview : writes
+User "1" -- "*" Post : creates
+User "1" -- "*" Comment : writes
+User "1" -- "*" Favorite : has
+Post "1" -- "*" Comment : contains
+Post "n" -- "m" User : likes
+Comment "1" -- "*" User : likes
+Comment "0..1" -- "*" Comment : replies_to
 
 @enduml
 ```
@@ -134,6 +202,10 @@ Bird(鸟类表):记录各种鸟类的详细信息,包括学名、栖息
 BirdRoute(观鸟路线表):存储推荐的观鸟路线信息,与地区和鸟类关联
 UserObservation(用户观察记录表):记录用户在实际观鸟中的观察数据
 RouteReview(路线评价表):存储用户对路线的评价和反馈
+User表:存储用户基本信息和个人资料
+Post表:存储用户发布的帖子信息
+Comment表:存储用户对帖子的评论
+Favorite表:存储用户的收藏记录
 
 # SQL语句
 ## 建表语句