【博客开发】服务端概要设计-数据库设计

简介: 【博客开发】服务端概要设计-数据库设计

此次博客开发,为了更加抽象,主要涉及到的实体为:账号<user>、维度<dimension_*>、维度周边生态<eco_*>


举个例子,维度可以是阅读金句,这时起的表名可以叫dimension_reading;维度可以加一个写作文章,这是起的表名可以叫dimension_writing……


也就是说这个博客以后可以容纳的所有展示内容都可以上面的规则添加。


再接在往下举例子,维度周边生态可以是评论,这是起的表名可以叫eco_comment。表示针对某个展示内容(即维度)的评论。


为了尽可能简化逻辑,本次实现在数据库实体上,只分三层:账号下面是隶属的维度,维度下面是隶属的生态,账号可以创建生态。(举个例子:用户a发表文章b,用户c在文章b下面评论d)



1. 实体构建(Go 实现)


一般先画 E-R 图,再写代码,但鉴于现在的开发工具比较高级,我们这里先实现实体的结构,再反向生成E-R图做诠释:


账号<user>:

type User struct {
    Account           string              `gorm:"not null;unique;" json:"account"`
    Password          string              `gorm:"not null;" json:"password"`
    Base              Base                `json:"base" gorm:"embedded"`
    DimensionReadings []*DimensionReading `json:"dimension_readings" gorm:"many2many:user__dimension_reading;constraint:OnDelete:CASCADE;comment:用户建的维度-读书"`
    DimensionWritings []*DimensionWriting `json:"dimension_writings" gorm:"many2many:user__dimension_writing;constraint:OnDelete:CASCADE;comment:用户建的维度-写作"`
    DimensionPhotos   []*DimensionPhoto   `json:"dimension_photos" gorm:"many2many:user__dimension_photo;constraint:OnDelete:CASCADE;comment:用户建的维度-图片"`
    EcoComments       []*EcoComment       `json:"eco_comments" gorm:"many2many:user__eco_comment;constraint:OnDelete:CASCADE;comment:用户写的评论"`
    BindProfiles      []*BindProfile      `json:"bind_profiles" gorm:"many2many:user__bind_profile;constraint:OnDelete:CASCADE;comment:个人资料"`
}



用户资料<bind_profile>(也属于维度)

type BindProfile struct {
    Nickname    string        `json:"nickname" gorm:"comment:昵称"`
    Avatar      string        `json:"avatar" gorm:"type:json;comment:头像"`
    Intro       string        `json:"intro" gorm:"type:text;comment:个人介绍"`
    Tag         string        `json:"tag" gorm:"type:json;comment:个人标签"`
    Base        Base          `json:"base" gorm:"embedded"`
    EcoComments []*EcoComment `json:"eco_comments" gorm:"many2many:bind_profile__eco_comment;constraint:OnDelete:CASCADE;"`
}


维度:*<dimension_*>

type DimensionReading struct {
    Author        string        `gorm:"not null" json:"author"`   //作者
    Location      string        `gorm:"not null" json:"location"` //出处
    BaseDimension BaseDimension `json:"base_dimension" gorm:"embedded"`
    EcoComments   []*EcoComment `json:"eco_comments" gorm:"many2many:dimension_reading__eco_comment;constraint:OnDelete:CASCADE;comment:这个维度的评论"`
    Users         []*User       `json:"users" gorm:"many2many:user__dimension_reading;constraint:OnDelete:CASCADE;comment:这个维度属于谁"`
}

image.png

目录
相关文章
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
11月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
567 1
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
441 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
615 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
|
SQL 调度 数据库
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
|
11月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
611 158
|
11月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
11月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1622 152

热门文章

最新文章