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

activeliang1 · 2020年03月22日 · 最后由 ericguo 回复于 2020年03月26日 · 2860 次阅读
目标:要做一个 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 字句,对于安排查询逻辑,方便很多。

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