标签: data-modeling

何时使用和不使用反向导航属性?

何时使用导航属性是显而易见的。但是什么时候应该使用反向导航属性,什么时候不应该使用反向导航属性呢?

当我使用导航属性创建双向关系时,是否应该始终使用反向导航属性?

有什么指导原则吗?

entity-framework data-modeling

2
推荐指数
1
解决办法
367
查看次数

Firestore 社交媒体好友请求数据模型

我正在使用 Firestore 构建社交媒体应用程序,我想知道构建好友请求数据的最佳方法是什么。

\n

当用户 John 想要向 Mary 和 Anne 添加好友时,我是否创建一个名为的根集合friend_requests并添加 3 个文档:

\n
    \n
  1. 以 John\xe2\x80\x99s 作为键的文档,userId其值将是 Mary 和 Anne\xe2\x80\x99s 的对象,其中包含他们的请求userIdstatus请求(待处理/接受/拒绝)
  2. \n
  3. 以 Mary\xe2\x80\x99suserId作为键的文档和一个带有 JohnuserIdstatusof request对象的数组
  4. \n
  5. 以 Annes\xe2\x80\x99s 作为键的文档userId和一个带有 JohnuserIdstatusof request对象的数组
  6. \n
\n

现在,当安妮和玛丽接受好友请求时,我删除friend_requests集合中的所有三个文档,然后:

\n
    \n
  • 我为每个用户(在users根集合中)添加一个名为的子集合friends,其中包含已接受请求的朋友的 usersIds、displayNames 和 photoURL
  • \n
\n

或者

\n
    \n
  • 我是否应该创建另一个根集合friends,为每个用户提供一个包含朋友信息的文档?
  • \n
\n

它似乎有很多重复的数据,因此我正在尝试解决它并找到在 Firestore …

data-modeling nosql firebase google-cloud-platform google-cloud-firestore

2
推荐指数
1
解决办法
1904
查看次数

成绩数据库表

我正在尝试定义一个表来存储在线成绩单的学生成绩.不过,我无法决定如何做到这一点.

成绩是在三分之一时期由学科给出的.每个学期都有平均成绩,总错过的课程和"恢复成绩"(我不知道正确的英语术语,但如果你低于平均水平,这是一个额外的考试,你试图提高你的成绩) ,我还要存储年度平均值和最终"恢复等级".基本上,它是这样的:

      |1st Trimester      |2nd Trimester      |3rd Trimester
Subj. |Avg.  |Mis.  |Rec  |Avg.  |Mis.  |Rec  |Avg.  |Mis.  |Rec  |Year Avg.  |Final Rec.
Math  |5.33  |1     |4    |8.0   |0           |7.0   |2           |6.5        |7.0
Sci.  |5.33  |1     |4    |8.0   |0           |7.0   |2           |6.5        |7.0
Run Code Online (Sandbox Code Playgroud)

我可以将这些信息存储在一个DB行中,每行如下:

1tAverage | 1tMissedClasses | 1tRecoveringGrade | 2tAverage | 2tMissedClasses | 2tRecoveringGrade
Run Code Online (Sandbox Code Playgroud)

等等,但我认为如果scholl决定通过bimester或其他一些时期评分(就像过去3年前一样),这将是一种痛苦.
我还可以对表格字段进行概括,并使用一个tinyint来标记这些成绩的三个月,或者它们是否是年度决赛.但是这个会要求很多子查询来编写报告卡,这也是一种痛苦.

哪两个更好,还是有其他方式?谢谢

sql database data-modeling

1
推荐指数
1
解决办法
2836
查看次数

数据库完整性:触发器与键/约束

我和我的朋友互相争论数据库的设计.
他认为,确保复杂数据库的完整性更好地使用触发器.

我相信为了这个目的,最好使用密钥(主要的,唯一的)和约束.
我认为触发器的使用是危险的,因为它们"在幕后"工作,并且说出执行命令后会发生什么并不容易.而且,如果触发器有bug,它可能会破坏DB的完整性.

你怎么看待这件事?

sql database-design data-modeling

1
推荐指数
2
解决办法
277
查看次数

可扩展数据库系统,Critique要求

我正在寻找为我的网站后端构建可扩展的数据库解决方案.我最近一直在阅读有关数据库设计的内容,我似乎已经开发了一个可能有用的想法.我认为这是一种使用同步数据维护n个数据库的新方法,但我可能错了.所以我要求评估这个想法并告诉我它是否疯狂.(或者如果它已经存在并且已经实施)

在该方案中,存在一组服务器节点.一个节点运行查询负载均衡器(让我们称之为A),其余节点运行典型的dbms,让我们统一调用这些节点N.

每个N都与其他N断开连接.即,N中的节点不需要与任何其他节点通信.每个N只与A连接.

这个过程就像这样

  • 所有数据库查询都通过A传递.(我们假设现在A具有无限的吞吐量和处理能力)
  • 检查每个查询(Q),并且确定它是否是一个将来自数据库或将写入到数据库的查询读的操作.(在sql中,read将是select和write将被更新)
  • 如果Q操作,则将其转发到N中的一个节点
  • 如果Q操作,则将其转发到N中的所有节点

假设它已正确实现,这会导致N中的所有节点都具有同步的数据库内容.只读数据的查询需要发送到一个节点.

这个想法似乎特别适合我,因为在我的系统中,写操作很少,不到1%.

关于这个想法的几个问题

  • 从理论的角度来看,这样的方案是否有意义?
  • 如果这确实有意义,是否已经实施了商业或免费的解决方案?

sql language-agnostic database-design scalability data-modeling

1
推荐指数
1
解决办法
196
查看次数

帮助db模式?

我正在创建一个简单的博客应用程序,到目前为止,我有3个表,帖子,评论和作者.

我将列出每个表的主键以及外键.

帖子将包含postid作为主键.

评论将包含commentid作为主键并将postid作为外键.

帖子与评论有0到多的关系.

作者将包含authorid作为主键.

作者将与帖子建立多对多的关系,并与评论建立多对多的关系.

最后一个陈述是我遇到的最麻烦的地方.作者实际上是否与帖子和评论存在多对多的关系,或者它是一对一的.如果它是多对多的,我听说有一个中间表描述帖子 - 作者和评论 - 作者之间的关系是一个好主意,但我不确定我会在这个表中使用哪些键?

如果我口头表达它作为一个作者可以写很多帖子,很多帖子都可以由一位作者写,我把它看作一对多,但是如果我从表中存储的实际数据中查看它会包含多个帖子帖子和作者将包含多个作者,然后它似乎是多对多的,因此这是交叉引用表的用途,用于删除重复项.

sql-server database-design data-modeling

1
推荐指数
1
解决办法
124
查看次数

mysql - 用户项目评级,每个用户1个评级,可更新 - 表格结构?

我想让我的用户能够对网站上的每个项目进行评分,从1到5.他们还必须能够根据需要返回并修改每个项目的评级.最后,该项目的页面将显示所有用户评级的平均日期.

至于PHP,我想我可以处理它.我正在努力的是设想一组逻辑表来处理上述问题?

我在考虑你的标准:

ID | ITEM## | USERID | RATING
Run Code Online (Sandbox Code Playgroud)

表设计,但感觉回去并不断检查以确定用户之前是否已对某个项目进行了评级,并在每次查看该项目时返回该结果,这将导致一组相当慢的脚本...特别是作为项目&用户数随时间增长.

对于这种情况,有没有人有更好的表格布局想法?我们正在考虑发布1500多件物品,未来会更频繁地添加,所以每件物品的表格有点过分不是吗?

谢谢!

mysql sql database-design data-modeling

1
推荐指数
1
解决办法
433
查看次数

ER图(绘图)


对于表示大型大学当前学期注册的关系数据库,考虑所有断言的模式的ER图是什么:

•100名教师,200门课程和800名学生.
•教师可以在一个学期内教授一门或多门课程(平均为2.0门课程).
•教师必须指导至少一名学生(平均= 2.5名学生)的研究.
•课程可能没有,一个或两个先决条件(平均值= 1.5个先决条件).
•即使目前没有学生注册,也可能存在课程.
•每门课程由一名教师授课.
•课程的平均入学人数为30名学生.
•学生每学期必须选择至少一门课程(平均= 4.0课程选择).

我曾多次尝试过这个答案,但我不能.所有帮助对我都很有价值.我将非常感谢MS Visio图表(如果可以节省时间),以帮助我可视化解决方案.

注意:我不是在寻找RTFM响应.

sql database-design data-modeling normalization

1
推荐指数
1
解决办法
4217
查看次数

购物车的建模项目和选项

我正在开发购物车应用程序,我对如何根据以下要求对项目和选项进行建模感到非常困惑:

  1. 每个项目可能有零个或多个选项(颜色,大小等)
  2. 每个选项可能有几个不同的值(例如绿色,蓝色,红色和橙色)
  3. 具有相同选项的两个项目可能具有该选项的不同值(例如,您可以订购绿色或橙色的T恤,并且您可以订购蓝色或红色的球帽)

我确信这是一种有点常见的情况,但它不是我以前遇到过的情况.有任何想法吗?

mysql database-design data-modeling

1
推荐指数
1
解决办法
502
查看次数

您如何在MongoDB中建立友谊关系?

我知道已经给出了许多建议,建议嵌入对其他用户的引用数组,但是忽略了所有此类答案,就是友谊是一种双向关系,当爱丽丝是鲍勃的朋友时,鲍勃自动是爱丽丝的朋友。我不是模仿追随者。

因此,我不想每次新用户进入系统时都保留两个引用。我需要一个考虑到关系的双向性质的模型。

我当时在考虑友谊的“边缘”集合,其中每个文档都引用了两个用户。想知道有关此的文献是否已经存在。

data-modeling mongodb

1
推荐指数
1
解决办法
1671
查看次数