Database design NoSQL数据库设计-可重复数据
例如,我正在学习nosql,并试图了解电影数据库网站的数据库设计会是什么样子?这对我来说是非常困惑的,因为我无法理解我复制了这么多信息的事实。我给你举个例子(也许我没弄好,你可以纠正我): 所以,如果我有一部电影:Database design NoSQL数据库设计-可重复数据,database-design,nosql,Database Design,Nosql,例如,我正在学习nosql,并试图了解电影数据库网站的数据库设计会是什么样子?这对我来说是非常困惑的,因为我无法理解我复制了这么多信息的事实。我给你举个例子(也许我没弄好,你可以纠正我): 所以,如果我有一部电影: { "title": "Interstellar", "director": ... ... "genre": [ "Comedy", "Action", ... ], "actors": [ {
{
"title": "Interstellar",
"director": ...
...
"genre": [
"Comedy", "Action", ...
],
"actors": [
{
"name": ...
...
},
{
"name": ...
...
},
],
}
我会在电影之间有很多相同的“类型”和“演员”。这似乎不合逻辑。。。如果我有其他可重复的东西,比如“类别”?如果我想在用户和电影之间建立链接呢?我是说,你明白我在说什么吗?请澄清如何(以及为什么)在nosql中实现这一点
非常感谢。嗯,对我来说,noSQL的魔力在于决定需要多少冗余。决定什么时候最好存储一个完整的对象,还是只存储指向其他集合中另一个对象的指针,这只是您想做的事情 例如,如果您想存储有关电影和参与电影的演员的信息,则可以使用以下内容:
{
movies: [
{
name: ...
genres: ...
rating: ...
actors: [ id-actor1, id-actor2, id-actor3]
},
{
name: ...
genres: ...,
rating: ...,
actors: [id-actor2, id-actor4]
},
{ other bunch of actors }
],
actors: [
{
id: id-actor1,
name: John McActor,
favorite_food: Tacos
},
{
id: id-actor2,
name: Jenny McActress,
favorite_food: Pizza
},
{ other bunch of actors }
]
}
这样,您就不必存储每部电影中演员的信息,而只需在需要信息时筛选一个标识符。这样一来,演员就不会存储在每一部电影中,而只会被引用,这样就可以大大减少DB的大小
您可以通过增加或减少冗余来实现这一点,方法有很多种,但最终取决于您想要实现什么。作为补充说明,您不必使用noSQL。当大多数数据密切相关时,最好使用SQL处理对您有利的关系。当您只需要一个简单的设计并且数据连接较少时,使用noSQL将更容易。如果没有规范,我们无法告诉您什么设计是合适的。遵循已出版的关于信息建模、关系模型和数据库设计的学术教科书。(记录和使用设计的语言和工具手册不属于此类教科书。)(维基文章或网络帖子也不属于此类教科书。)在卡住的地方问一个具体的非重复问题。