新手问题 这么复杂的需求,如何设计数据库……头大

activeliang1 · 2020年03月22日 · 最后由 ericguo 回复于 2020年03月26日 · 912 次阅读
目标:要做一个 web app 给老外在线学习中文。

这个 app 主要分两大版块:

  1. 课程

  2. 练习题

根据现有教学材料内容,梳理出各个版块所需要的数据,如图(请放大看):

然后看着不知道如何下手,有点头大,主要因为:

  1. 不知道如何设置数据库才好
  2. 前端还需要让它能 新增、编辑、展示。

求问下,如果你来做,会怎么设计、下手。或者有相关的建议?希望能得到些思路…

😭 😭 😭

zealinux 回复

爲什麼?

  1. 梳理产品的所有需求点,先按功能分,再根据优先级标号列表

  2. 把所有涉及的数据实体列出来,尽可能细化,后期发现粒度太细再合并就好

  3. 把实体的关系画一下,理清楚

  4. 考虑一下实际的用户场景 (user story),大概判断一下哪些场景是高频,数据的特征是怎样 (特征是指,W 多? R 多? 改动频繁? 一条数据大小怎样?)

5.大致搞清楚之后,先拿 MySQL/PostgreSQL 当基准,再看看是不是要根据特征添加/ 更换数据存储

6.一套下来大概也知道该怎样设计了

先用左侧的练习题抛砖引玉

题目表 -> type 区分判断 多选啥啥啥 如果需要逻辑更清晰就用单表继承

结构块表 -> belongs_to 题目 type 区分是材料还是答题

结构内容表 -> belongs_to 结构块 type 区分类型

以上三个表都可以做单表继承 未来统计会方便

发钱我就回复。

不复杂花钱雇你干吗?

云开发?

开局一个问题,思路全靠网友

这种需求最好别用 rails 这套来做。

java 最合适。。。 表量很大,关联多,跨表查询多。查询几乎很明确。

AR 这一套关联太多了就显得乱,跨表查询不方便,明确的查询用不上 AR 动态。

一句话,虽然量大,但是目的很明确。

nouse 回复

阁下长得真是天生励志!

jpa 轻松搞定。

13楼 已删除

请问 怎么理解 目的很明确

这个问题挺大的呀,汉语流利说?

pynix 回复

AR 跨表查询不方便

感觉还好啊,include(:user_attachments).where(user_attachments: { achived: true}),写起来也很有乐趣啊。

我这里还有一堆 select, group_by 的报表,用 AR 其实只有比 SQL 灵活,因为可以不限制你在哪里加 where, group_by 等 SQL 字句,对于安排查询逻辑,方便很多。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册