问题标签 [schema-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
487 浏览

python - 如何在 App Engine 中表示一对一的关系

假设您有一个想要存储在数据存储中的“用户”记录的概念。

几乎每次使用用户对象时,您都希望使用一些字段,例如 first_name 和 last_name。

但是,有些字段只有一个用例,例如 twitter_oauth_token 和 twitter_oauth_secret,并且在 95% 的时间都不需要它们时,对它们进行序列化和反序列化有点低效。

因此,如果您拆分模型:

您可以在 UserTwitterOauth 中为用户放置一个 ReferenceProperty,但这实际上是一对多的,因为没有什么可以阻止每个用户拥有多个 UserTwitterOauth 对象。您希望最多有一个与任何用户相关的 UserTwitterOauth。您如何将这些模型一对一地关联起来?

0 投票
2 回答
283 浏览

xml - XML Schema:仅当提供另一个可选标签时才允许使用标签

我正在尝试定义一个具有可选标记的 XML 模式,sort_expression. 如果提供了该可选标签,alternate_sort_expression则允许第二个可选标签,但条件是第一个标签的存在。

例如,我希望这些示例验证:

或者

或者

但以下内容不应通过验证:

我认为下面的模式,使用两个序列的选择会起作用。不幸的是,模式本身没有验证;Altova XML Spy 告诉我“复杂类型指示的内容模型是模棱两可的:

0 投票
2 回答
1487 浏览

mongodb - MongoDB 模式设计 - 参考与嵌入

我正在编写一个模拟,它需要一个支持数据库来存储结果。模拟写入大量数据。出于明显的性能原因,我选择试用 NoSQL 数据库,特别是 MongoDB。但是,我对我的数据模型有点困惑。

在关系世界中,模式将转换为:

关系数据模型

  1. Simulation 保存仿真配置、状态等。
  2. 场景描述了一个特定的模拟案例。
  3. 实现组 TestResults。

模拟工作如下。首先,我们创建配置(映射到模拟表)并指定场景以及要计算的实现数量。然后我们开始模拟。模拟在一个场景中创建实现(并行,这么多实现并同时计算并插入到模拟当前正在处理的场景中)。

然而,在 NoSQL,特别是 MongoDB 中,关系又差又慢,所以我应该尽可能地使用嵌入式文档。所以我想出了这个:

嵌入式数据模型

当首先计算所有实现然后将其作为单个插入(场景)保存到数据库时,这个模型应该给我最好的性能。

但是,出于性能原因,我想在计算后立即将实现插入到场景中。这将需要在每次完成实现时更新场景。这是一个坏主意吗 ?它在 MongoDB 参考上说,当将嵌入文档添加到父文档中时,父文档会更新,但无论如何都会有性能损失。

不将实现嵌入到场景中而是引用它会更快吗?稍后读取和聚合数据时会损失多少性能?我应该知道其他任何陷阱吗?

谢谢。

0 投票
1 回答
1001 浏览

hyperlink - Cassandra 中的无价值列技术 - 数据库模式

我正在使用 Cassandra 0.8.2

我正在尝试使用“无价值列”技术来设置我的 cassandra 模式。无价值列背后的想法如下:列的名称成为相关信息,“名称/值”对的值为空。这用于使查询更快 - 非规范化的一个示例。我希望列的名称是反向链接的 url。行键是反向链接的目标 url 的 UUID。这甚至是一个好主意/模式设计吗?

我正在使用一个非常基本的示例来说明我的问题的重点。这是我使用 Cassandra-Cli 设置的内容:

我得到错误:

我认为我的错误是由于我在 column_name 中使用的时间段。简而言之,我想知道你们中的一些人是否遇到过更好的方法来使用 Cassandra 中的“无价值列”的想法?无价值列技术的任何好的/更好的例子?我的想法甚至是使用无价值列技术的正确方法吗?

提前谢谢各位。

0 投票
2 回答
1813 浏览

mysql - 数据库用户表设计,针对特定场景

我知道这个问题已被多次询问和回答,并且我花了很多时间阅读以下问题:

问题在于,对于几类解决方案,支持者的分布似乎有些均匀:

  • 只要标准化,就将用户设置粘贴在单个表中
  • 将其拆分为 1 比 1 的两个表,例如“users”和“user_settings”
  • 用某种键值系统概括它
  • 以位域或其他序列化形式粘贴设置标志

因此,冒着提出重复问题的风险,我想描述一下我的具体情况,并希望得到更具体的答案。

  • 目前我的网站在 mysql 中有一个用户表,大约有 10-15 列(id、name、email、password...)

  • 我想为是否为不同类型的事件(notify_if_user_follows_me、notify_if_user_messages_me、notify_when_friend_posts_new_stuff...)发送电子邮件警报添加一组针对每个用户的设置

  • 我预计将来我会很少为每个用户添加一项设置,这些设置主要是与用户一对一的设置。

我倾向于创建第二个 user_settings 表并在其中粘贴“非必要”信息,例如电子邮件通知设置,以使主用户表更具可读性,但很想听听预期会说什么。

0 投票
1 回答
2575 浏览

schema - 如何在 mongodb 中为作者/用户模型设计模式

我浏览了 mongo 网站上的大多数 mongodb 架构设计文章以及 SO 上的大多数问题。还有一个用例我还没有弄清楚。在查看这些教程时,他们通常会参考文章评论问题和产品/类别问题。我想弄清楚在查询帖子列表时如何建模一对多关系(作者与帖子)。以下是示例模式:

现在,假设您要查询最新的 10 个帖子。一个非常简单的查询,但现在您的帖子可能每个帖子都有一个指向用户的唯一 ObjectID。现在,您应该如何完成获取每个用户的姓名和电子邮件以获取帖子。

  1. 您是否应该从帖子查询中创建用户 ObjectID 的数组,然后运行查询 db.users.find({ _id: {$in: PostsUserIDArray}}); 之后,您会使用您的应用程序逻辑将正确的用户信息与正确的帖子相匹配吗?

  2. 您是否应该在帖子中保留数据的副本。IE 将用户 ID、姓名和电子邮件保存在帖子表中。然后,当用户更新此信息以更新帖子中的所有信息时,只需挂一个钩子即可。

  3. 一个我自己或我的朋友没有想到的选择。

感谢所有的帮助,因为我试图围绕 mongo 数据建模。

0 投票
1 回答
4539 浏览

mongodb - Mongo DBRef 有什么问题?

来自 RDMBS 背景,很难不去想像连接这样的想法,尤其是在使用无模式 MongoDB 环境时。

我在博客上读到 DBRefs 只有在您知道所引用对象的类型时才有用。

为什么会这样?当然,它们的用途不止于此。

假设我有一个用户收藏和一个雇主收藏。许多用户可以参考同一个雇主。对我来说,这是对 DBRef 的完美使用。但是,这与我在该博客上阅读的内容相矛盾。

当然,我可以将雇主嵌入到每个用户集合中,但是当雇主改变时会发生什么?也许他们的雇主改变了地址或电话号码或其他东西。如果雇主嵌入到每个用户中,那么我必须更新每个用户的嵌入文档。

那不可能是有效的。或者可以吗?

0 投票
1 回答
597 浏览

database-design - 你知道任何支持嵌入式文档(MongoDB)的数据库设计软件吗?

我正在尝试为 MongoDB 设计数据库模式,但希望能够直观地表示嵌入式文档。有点像这样:

http://www.mongodb.org/download/attachments/131465/reference.jpg?version=1&modificationDate=1253899724083

有谁知道一些软件可以让我做到这一点?我知道我可以在纸上做到这一点,但我希望能够与同事共享架构并让他们编辑小东西。

0 投票
1 回答
301 浏览

php - Mongo DB 集合字段架构最佳实践

我想知道如何设置我的集合模式?

我的意思是首先我需要一个用户对象(用户名,电子邮件,密码),然后我需要一个字段来让用户确认注册,所以我需要在插入用户时插入所有字段(用户名,电子邮件,密码,确认 = 0 )

或者

只有当用户去确认他的注册帐户时才创建确认字段更好?

0 投票
3 回答
389 浏览

c# - Mongo DB模式设计问题

我正在为像 stackoverflow 这样的网站设计一个 mongo db 架构。有问题和用户。用户可以将问题添加到他们最喜欢的列表中,并且他们可以在最喜欢的列表中搜索问题。

我有 2 个集合,分别是用户和问题。问题是如何存储收藏夹。有2个选项

  1. 与用户一起存储最喜欢的问题 Id 的列表
  2. 与问题一起存储用户 ID 列表(将这个问题添加到他们的收藏夹的用户)。

我应该采取哪种方法?请记住,我也需要搜索用户的收藏夹。

对于 db/record 大小的估计,假设问题的数量,stackoverflow 具有的用户 db 操作

欲了解更多信息;

这个应用程序是一个用c#编写的asp.net mvc,希望使用Lucene.NET进行搜索

提前致谢