-6

我天生就是一个前端人员,但最近几天数据库设计和后端开发引起了我的兴趣,我一直很困惑。我想完全掌握这些概念,这样我的头就不会再疼了。

我习惯于处理像活动记录这样的 ORM。当我想象我的用户对象通过导轨时,我想象一个人的对象与人员表中的一行相关。好的基本。

所以,我读到像 mongodb 这样的非关系型数据库不仅很酷,因为它们“处理大数据速度很快”,而且它们也很酷,因为它们显然使使用 oop 语言进行开发更加自然(为什么?)。然后我还读到大多数设计模式可能并不是真正的关系型。好的,这就是我迷路的地方。

1)关系设计和非关系设计的一些基本例子是什么?2)与上面类似,结构化数据与非结构化数据的示例是什么(这只是在上面重新表述吗?)

所以,考虑到这些事情,我觉得(在我一无所知的情况下)我尝试建模的几乎所有类型的项目都是关系型的。但也许我只是在使用语义而不是技术性。例如,帖子和评论。互相有关系。在那里添加用户。如今,似乎大多数应用程序都具有通过其他数据/对象访问总是有用的数据。那是关系不是吗?

描述一些不太典型的东西怎么样。

假设我正在构建一个锻炼追踪器应用程序。我有用户、练习、锻炼、例程和 log_entries。

我创建了一个例程来分组锻炼。锻炼是一组锻炼。我通过日志条目记录我的次数和体重以进行锻炼。这是关系数据还是非关系数据?mongo 对这个建模会很好还是很糟糕?

我听说统计数据之类的东西开始发挥作用。这对上面的例子有什么影响?人们通常谈论什么统计数据?

假设我添加了跟踪其他内容,例如用户的体重、身高、体脂等。这对事情有什么影响?

感谢您花时间帮助我理解。

编辑:谁能解释为什么开发一个比另一个更容易。使用 mongo 之类的东西是否更敏捷,因为它在“ge it”后“点击”更多,还因为您不需要运行迁移?

另一件事,当使用像 ORM 这样的抽象时——这真的很重要吗?如果是什么时候?对我来说,最初的价值是查询数据和为我的对象建模的便利性。任何能让我更轻松地做到这一点的东西,我都会很高兴。在尝试对数据进行建模时,我确实发现自己经常摸不着头脑。

4

1 回答 1

0

好吧,让我给它一个刺...

(免责声明:我对非关系数据库的实践经验很少,所以这会有点“以关系为中心”。)

关系数据库使用“cookie-cutters”(表)来生成大量统一的“cookie”(这些表中的行)。非关系数据库在如何塑造“cookie”方面为您提供了更大的自由度,但您失去了基于集合的 SQL 的力量。有点像静态与动态类型。

1)关系设计和非关系设计的一些基本例子是什么?

元组是属性的有序列表,关系是一组具有相同“形状”的元组,表是关系的物理表示。如果有什么东西符合这个范式,那就是“关系的”。

金融交易往往是相关的,而(比如说)文本文档则不是。中间有很多灰色地带。

2)与上面类似,结构化数据与非结构化数据的示例是什么(这只是在上面重新表述吗?)

我不知道。你如何定义“结构化”?

如今,似乎大多数应用程序都具有通过其他数据/对象访问总是有用的数据。那是关系不是吗?

当然。关系数据库本身没有“指针”,但外键基本上起到了相同的作用。您始终可以以您认为合适的方式连接数据,尽管连接通常是通过 FK 完成的。

假设我正在构建一个锻炼追踪器应用程序。我有用户、练习、锻炼、例程和 log_entries。

看起来这很适合关系模型。

假设我添加了跟踪其他内容,例如用户的体重、身高、体脂等。这对事情有什么影响?

您可能需要额外的列和/或表。这看起来仍然与我有关。

人们通常谈论什么统计数据?

也许他们在谈论索引统计信息,以帮助基于成本的查询优化器选择更好的执行计划?

为什么开发一个比另一个更容易

适合这项工作的工具,记得吗?如果您事先知道数据的结构并且它适合关系模型,请使用关系数据库。

此外,关系数据库往往非常擅长管理由许多用户同时访问的大量数据(尽管对于某些非关系数据库也可能如此)。

另一件事,当使用像 ORM 这样的抽象时——这真的很重要吗?

ORM 倾向于让简单的事情变得更容易,让困难的事情变得更难。再次,这是一个平衡问题。对我来说,能够编写一个精确提取我需要的字段的微调 SQL 胜过编写样板 CRUD 的乏味,所以我不是 ORM 的忠实粉丝。其他人可能不同意。

在尝试对数据进行建模时,我确实发现自己经常摸不着头脑。

Well, it is a big topic. If you are willing to put the time and effort in it, start with the ERwin Methods Guide, and also take a look at: Use The Index, Luke!

于 2012-07-20T12:17:17.967 回答