所以我需要从下一个SQL数据库设计NoSQL Schemas(Mongoose)。 Image of SQL database
所以我有一些关于如何制作这些模式的问题:
答案 0 :(得分:1)
在Mongo中,就像在SQL中一样,有很多方法可以构建数据。 Mongo需要考虑的关键是如何访问数据。尝试以与预期执行的查询匹配的方式对数据进行分组。使用该上下文,我将尝试回答您的一些具体问题:
1)您询问将学生的entryDate存储在课堂中的位置。你经常独立拉学生吗?或者你总是用他们的课程抓住他们?你需要独立上课吗?
一种选择是在您的学生中嵌套课程: 学生=>
{
firstName: "John",
lastName: "Smith",
classes: [{
classCode: "EN101",
entryDate: "10/10/2017"
}]
}
如果您通常只访问一次,那么您还可以拥有一个包含学生列表的班级对象: Class =>
{
classCode: "En101"
students: [{
studentId: 12345,
firstName: "John",
lastName: "Smith,
entryDate: "10/10/2017"
}]
}
如果您经常单独引用某些内容,那么您可以拥有一个像SQL一样的平面表,只有classCode,studentId,studentEntryDate
这些对象是否一起存储在一个表中?如果这样听起来像是一个很好的歧视者。就像你只有一个People系列一样。但是,我猜它们是分开存放的?教师和学生存放在不同的馆藏中?在这种情况下,您可以让它们在代码中继承相同的类,并且它们将在没有任何鉴别器的情况下精细地序列化为mongo。
有多种方法可以解决这个问题。您可以为每个表创建集合并维护链接表,但通常不是最好的方法。我认为教师和课程将是一个多少不多?所以每个课程都会有一位老师。如果课程中有很多老师,你可以只列出一个教师名单,而不是一个叫老师的名单。
希望我的回答很清楚,请随时评论以获取更多信息。
如果您是Mongo的新手,我建议您注册一些免费的courses。非常有用,为你奠定了良好的基础。
转到mongo后祝你好运。这是值得的!
答案 1 :(得分:0)
下面是两个很好的资源,可以比较RDBMS和NoSQL数据库。