Delancey 2 месяцев назад
Родитель
Сommit
0304797bf2
3 измененных файлов с 143 добавлено и 1 удалено
  1. 6 0
      .vscode/settings.json
  2. 134 0
      docs-prod/schema.md
  3. 3 1
      travel-app/.vscode/settings.json

+ 6 - 0
.vscode/settings.json

@@ -0,0 +1,6 @@
+{
+    "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular"],
+    "plantuml.server":"http://www.plantuml.com/plantuml"
+  
+  }
+  

+ 134 - 0
docs-prod/schema.md

@@ -0,0 +1,134 @@
+# 一、Schema范式设计
+## 发布帖子模块
+- 1. 模块功能
+发布帖子模块允许用户分享他们的旅游经历、照片和建议。主要功能包括:
+
+文本输入:用户可以输入帖子标题和内容,描述他们的旅行经历。
+图片上传:用户可以上传多张旅行照片,增强帖子内容的吸引力。
+位置标记:用户可以选择旅行目的地的地理位置,提供更具体的信息。
+标签添加:用户可以为帖子添加相关标签(如“海滩”、“山脉”、“城市游”等),方便其他用户搜索。
+隐私设置:用户可以选择帖子是公开可见,还是仅限好友可见。
+预览功能:用户在发布前可以预览帖子效果,确保内容和格式符合期望。
+发布和保存草稿:用户可以选择立即发布帖子或保存为草稿,以便后续编辑。
+2. 用户界面设计
+发布帖子按钮:在首页或个人页面有一个明显的“发布帖子”按钮。
+
+- 发布帖子页面:
+
+标题输入框:输入帖子标题。
+内容输入框:富文本编辑器,支持文本格式化(如加粗、斜体、列表等)。
+图片上传区域:拖放区域或“选择文件”按钮,支持多张图片上传。
+位置选择:地图组件或下拉菜单,用户可以选择或搜索目的地。
+标签输入框:可输入多个标签,使用逗号分隔。
+隐私设置:选择框,用户可以选择公开或私密。
+预览按钮:查看帖子发布后的效果。
+发布和保存按钮:用户可以选择发布或保存为草稿。
+
+# 表设计
+为了设计一个符合规范的Parse Schema,我们需要创建几个表(Class),每个表将包含具体的字段。根据您描述的旅游App发布帖子模块,以下是所需的表及其字段的设计。
+
+### 1. Parse Schema 设计
+
+我们将创建以下几个表:
+
+- **User**:用户表,用于存储用户信息。
+- **Post**:帖子表,用于存储用户发布的帖子信息。
+- **Image**:图片表,用于存储与帖子相关的图片信息。
+- **Tag**:标签表,用于存储标签信息。
+
+### 2. 表结构及字段设计
+
+#### User 表
+
+- **表名**:User
+- **字段**:
+  - `objectId` (默认字段)
+  - `createdAt` (默认字段)
+  - `username` (String) - 用户名
+  - `email` (String) - 用户邮箱
+  - `profilePicture` (File) - 用户头像
+
+#### Post 表
+
+- **表名**:Post
+- **字段**:
+  - `objectId` (默认字段)
+  - `createdAt` (默认字段)
+  - `title` (String) - 帖子标题
+  - `content` (String) - 帖子内容
+  - `location` (GeoPoint) - 帖子位置
+  - `privacy` (String) - 帖子隐私设置(公开/私密)
+  - `user` (Pointer<User>) - 发布用户(外键关联到User表)
+  - `tags` (Array<Pointer<Tag>>) - 帖子标签(外键关联到Tag表)
+  - `images` (Array<Pointer<Image>>) - 帖子图片(外键关联到Image表)
+
+#### Image 表
+
+- **表名**:Image
+- **字段**:
+  - `objectId` (默认字段)
+  - `createdAt` (默认字段)
+  - `url` (String) - 图片URL
+  - `post` (Pointer<Post>) - 关联的帖子(外键关联到Post表)
+
+#### Tag 表
+
+- **表名**:Tag
+- **字段**:
+  - `objectId` (默认字段)
+  - `createdAt` (默认字段)
+  - `name` (String) - 标签名称
+
+### 3. PlantUML 类图表示
+
+以下是使用PlantUML表示的类图,展示了各个表及其字段和关系:
+
+```plantuml
+@startuml
+
+class User {
+    +objectId: String
+    +createdAt: Date
+    +username: String
+    +email: String
+    +profilePicture: File
+}
+
+class Post {
+    +objectId: String
+    +createdAt: Date
+    +title: String
+    +content: String
+    +location: GeoPoint
+    +privacy: String
+    +user: Pointer<User>
+    +tags: Array<Pointer<Tag>>
+    +images: Array<Pointer<Image>>
+}
+
+class Image {
+    +objectId: String
+    +createdAt: Date
+    +url: String
+    +post: Pointer<Post>
+}
+
+class Tag {
+    +objectId: String
+    +createdAt: Date
+    +name: String
+}
+
+User "1" -- "0..*" Post : has
+Post "1" -- "0..*" Image : contains
+Post "0..*" -- "0..*" Tag : tagged with
+
+@enduml
+```
+
+### 4. 设计范式说明
+
+- **第一范式**:所有字段都是原子性的,表中没有重复的列。
+- **第二范式**:所有非主键字段都完全依赖于主键,确保没有部分依赖。
+- **第三范式**:没有传递依赖,所有非主键字段都直接依赖于主键。
+

+ 3 - 1
travel-app/.vscode/settings.json

@@ -1,3 +1,5 @@
 {
-  "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular"]
+  "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular"],
+  "plantuml.server":"http://www.plantuml.com/plantuml"
+
 }