问题标签 [data-modeling]

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 回答
181 浏览

database-design - 数据库设计问题

我正在设计一个组织结构图,模型几乎已经准备好,并且为了清晰起见稍微简化了一点。

所以我想知道每个 OrgUnit 的 ManagerEmployee(应该有一个),并且员工可以有不止一份工作,但其中一个必须是主要工作,所以我知道他的经理和其他东西是什么。这将支持 scnese 背后的一些工作流程,这就是为什么它不是一个非常简单的组织结构图模型。

那么你会怎么做,你会添加属性(IsManager 属性到 OrgUnitJobs 模型)还是添加 ManagerOrgUnitJobId 到 OrgUnitModel。为什么?

同样,对于员工,您会将 IsPrimaryJob 属性添加到 OrgUnitJobEmployee 模型,还是将 PrimaryJobId 添加到 Employee 模型。

0 投票
2 回答
140 浏览

database - 如何在数据库中对此[Networks, details in post] 建模以提高效率和易用性?

在linkedin,当您访问某人的个人资料时,您可以看到您与他们的联系方式。我相信linkedin显示了高达3级的连接,如果不是更多的话,比如

shabda -> Foo 用户、bar 用户、baz 用户 -> Joel 的连接 -> Joel

我怎样才能在数据库中表示这个。

如果我建模为,

然后要找到网络,三层深,我需要获取我所有的连接,他们的连接,以及他们的连接,然后查看当前用户是否在那里。这显然对于任何大小的数据库都是非常低效的,并且可能也很笨重。

因为,在链接时我可以看到这个网络,在我访问的任何个人资料上,我认为这也不是预先计算的。

我想到的另一件事可能是最好不要将其存储在关系数据库中,但是存储和检索它的最佳方法是什么?

0 投票
2 回答
198 浏览

entity-framework - 为特定应用程序建模实体 - 实体框架

我有 2 个应用程序:

  1. Manager UI - 它应该能够创建一个包含所有字段(用户名、电子邮件、年龄等)的用户并显示它们。
  2. 核心组件 - 只需要 UserId 和 Username 字段,并且需要非常高效。它也不应该能够写入数据库。

看来我需要两种不同的模型,一种用于 UI 应用程序,另一种用于核心组件。当我创建第一个模型时,生活很美好。但是当我尝试创建第二个模型时,我得到了所有不必要的字段。如果我尝试删除它们 - 我设法只为可为空的字段执行此操作,而不是为必需的字段(实际上只需要保存)。这是我得到的:“必须映射表用户中的列 Users.email:它没有默认值并且不可为空。”

将“电子邮件”字段设置为私有 getter & setter 并不能解决我的问题,因为我根本不想将值存储在实体上(并从数据库中获取字段)——正如我所说,这个应用程序需要尽可能高效。

我相信,如果我能以某种方式将模型设置为只读,它会解决这个问题,但这只是一种预感(我找不到这样做的方法——还有吗?)

任何帮助,将不胜感激。谢谢,尼尔。

0 投票
7 回答
23311 浏览

database-design - 在应用程序中支持自定义字段的设计模式是什么?

我们开发商业应用程序。我们的客户要求自定义字段支持。例如,他们想向客户表单添加一个字段。

存储字段值和有关字段的元数据的已知设计模式是什么?

我现在看到这些选项:

选项 1:将 varchar 类型的 Field1、Field2、Field3、Field4 列添加到我的 Customer 表中。

选项 2:在客户表中添加一个 XML 类型的列,并将自定义字段的值存储在 xml 中。

选项 3:添加一个带有 varchar 类型列的 CustomerCustomFieldValue 表,并将值存储在该列中。该表还将有一个 CustomerID,一个 CustomFieldID。

CustomFieldID 将是另一个名为 CustomField 的表中的 ID,其中包含以下列:CustomFieldID、FieldName、FieldValueTypeID。

选项 4:添加一个 CustomerCustomFieldValue 表,其中包含每个可能的值类型的列,并将值存储在右列中。与 #3 类似,但字段值使用强类型列存储。

选项 5:选项 3 和 4 使用特定于单个概念(客户)的表。我们的客户也要求其他形式的自定义字段。我们是否应该有一个系统范围的自定义字段存储系统?因此,与其拥有多个表,例如 CustomerCustomFieldValue、EmployeeCustomFieldValue、InvoiceCustomFieldValue,我们将拥有一个名为 CustomFieldValue 的表?虽然它对我来说似乎更优雅,但这不会导致性能瓶颈吗?

您是否使用过这些方法中的任何一种?你成功了吗?你会选择什么方法?你知道我应该考虑的其他方法吗?

此外,我的客户希望自定义字段能够引用其他表中的数据。例如,客户可能希望向客户添加“最喜欢的付款方式”字段。付款方式在系统的其他地方定义。这带来了图片中“外键”的主题。我是否应该尝试创建约束以确保存储在自定义字段表中的值是有效值?

谢谢

=======================

编辑 07-27-2009:

谢谢您的回答。看起来方法列表现在非常全面。我选择了选项 2(单个 XML 列)。这是目前最容易实现的。由于我的要求将变得更加复杂,并且要支持的自定义字段的数量将变得更大,因此我可能不得不采用更严格定义的方法。

0 投票
5 回答
2138 浏览

database-design - 电子商店实施:订单状态?

你好,我的程序员伙伴们,

我正在从头开始设计和编程一家在线商店。它有一个模块来管理通过前端收到的“订单”。

我需要有一个状态才能知道某个订单在某个时刻发生了什么,假设状态是:

  • 待付款
  • 已确认 - 等待发货
  • 已发货
  • 取消

我的问题是一个简单的问题,但对于决定商店设计非常重要,并且是:您将如何存储此状态:您会在 Orders 表中为其创建一个列还是只是“计算”状态每个订单是否已收到付款或是否已为每个订单发货?(除了我认为 is_cancelled 列)

模拟此类问题的最佳方法是什么?

PD:我什至希望将来可以配置这些状态,购买使用相同软件的其他客户端。

0 投票
2 回答
317 浏览

php - 电子商店、电子商务商店软件设计方面的好资源?

我正在从头开始自己设计一个在线商店,我真的错过了一些关于设计和实施 s-shop/电子商务系统的常见问题和解决方案的宝贵资源

您是否知道我可以阅读的任何有价值的资源(在线/书籍、博客等)。

有什么推荐吗?

0 投票
4 回答
2330 浏览

java - 我使用哪种类型来表示 Java 中的任意 blob?

我有一个可以通过各种方法和各种格式接收数据的应用程序。我有可插入的接收器,它们以某种方式获取数据(例如,通过轮询邮箱、侦听 HTTP 请求、查看目录的内容等),将其与 MIME 类型相关联,然后像这样传递它:

再往下,数据由专门的处理程序根据mime字段的值进行处理。我期待 ZIP 文件、Excel 文档、SOAP、通用 XML、纯文本等内容。此时,代码应该与数据中的内容无关。data该字段的合适类型是什么?Object? InputStream? Byte[]?

0 投票
2 回答
1369 浏览

sql - 每个客户有选择地覆盖主数据的数据库结构

对于这个问题,考虑一个使用多租户数据库以及制造商和模型建模的应用程序。如果我们谈论汽车,那么制造商将是福特、雪佛兰、宝马等,而车型将是 F-150、Camaro 和 M3。

型号与制造商的关系是多对一的。每个租户的数据使用 customer_id 分隔。

数据模型的要求:

  • 可以在主级别定义制造商和模型,以使所有客户都可以使用它们
  • 客户选择他们想要使用的主实体
  • 客户可以覆盖主模型或制造商的属性
  • 客户可以创建自己的制造商
  • 客户可以为自己或主要制造商创建自己的模型
  • 模型中的其他实体将与这些实体相关联,因此希望每个实体都有一个主表,可以为其创建外键。制造商和型号表在示例中扮演了这个角色。

在这个例子中:

  • 客户 1 按原样使用福特,覆盖雪佛兰,并添加两个定制制造商
  • 客户 1 按原样使用雪佛兰和宝马,并添加了一家定制制造商
  • 模型是根据脚本中的注释创建的

下面是一个满足所有要求的带注释的示例实现。

  • 如何改进?
  • 还可以通过哪些其他方式对这些关系进行建模?

制造商表

模型表

简化使用这些表的视图

customer_id 1 的制造商

SELECT manufacturer_id, name FROM vw_manufacturers WHERE customer_id = 1;

customer_id 2 的制造商

SELECT manufacturer_id, name FROM vw_manufacturers WHERE customer_id = 2;

customer_id 1 的模型

SELECT * FROM vw_models WHERE customer_id = 1;

customer_id 2 的模型

SELECT * FROM vw_models WHERE customer_id = 2;

0 投票
5 回答
15752 浏览

database - DB2 的数据模型工具

我在 DB2 中创建了一个数据库和具有关系的表。我想根据我在 DB2 中的数据库设计创建一个 ER 图。MS SQL 具有从 DB 模式创建 ER 图的功能,但 DB2 似乎没有,至少据我所知。

任何人都知道 DB2 本身的任何开源工具/设施吗?

0 投票
3 回答
432 浏览

sql - 数据建模 - 如何处理两个相关的“状态”列?

我遇到了一些让我烦恼的事情,以至于我想来这里向你们(和女孩)寻求一种“最佳实践”类型的建议

我的模型中有一张桌子,我们称之为prospect. 两个独立的外部系统可以为该表中的行提供更新,但仅作为相应系统中该记录的“状态”。

我需要在本地存储这些状态。最初的想法,当然,它只是为了制作两个可以为空的外键。像这样的东西。

在这个例子中,当然会有两个表,其中包含状态的 id/value 对。

这是一个问题 -除非是(这正是业务规则的工作方式),否则ext_status_2_id始终为 NULL 。ext_status_1_id1

我是否正确建模了这个?我只是在我的大脑后面有一个唠叨的声音告诉我“不是每一行都需要一个ext_status_2_id,所以这可能是不正确的”。

如果重要的话,这是 MySQL 5.0.45,我正在使用 InnoDB