标签: database-design

需要打印店产品选项的数据库架构设计方面的帮助

我最近一直在制作一家印刷店网站。我现在在开发高效的数据库模式时遇到了麻烦。

我的应用程序是一家印刷店,为海报、名片和传单等提供定制印刷品。我面临的问题是开发产品选项的架构。这是一个场景:名片可以有“尺寸”和“材质”选项。“尺寸”可以是“3.5x2.5 英寸”或“3.25x2.25 英寸”。同样,“材料”可以是“300 gsm 卡片纸”或“200 gsm 卡片纸”。现在我的商店提供的是选项和数量组合的价格。

喜欢, 100 Business Cards + 3.5x2.5 inch + 300 gsm Card Stock = $500.00

或者

200 Business Cards + 3.5x2.5 inch + 300 gsm Card Stock = $800.00

这里需要注意的一点是,“传单”和“海报”产品的“尺寸”选项是不同的。所以“3.5x2.5”的海报没有意义。海报产品将有自己的尺寸。价格始终与期权组合绑定,没有期权组合的产品没有单独的价格。

其次,也有基于重量的运输。所以我也想知道,权重存储在数据库的哪里?

请提供一些有关设计此类数据库的见解。另外,我想要一种基于 ActiveRecord 的方法,因为我在 EAV 建模方面太弱了。

mysql database activerecord database-design

0
推荐指数
1
解决办法
2686
查看次数

如何为会议和研讨会设计关系数据库

我必须为组织会议的公司设计一个数据库(作为大学的作业)。私人客户或组织可以参加这些会议(每个组织可以报名几个人)。目前我需要一些如何完成我的项目的建议,因为我的老师说这是非常不正确的。

这是简短的描述:

  • 有些公司组织的会议可能需要一天或多天
  • 客户需通过www网站注册
  • 客户是个人或组织,但会议参加者是个人
  • 组织可以为会议预留一些空间,但应在会议开始前两周填写这些信息
  • 对于需要超过一天的会议,客户可以报名参加任何一天(例如仅第一天)
  • 此外,会议与研讨会相关(客户也可以参加研讨会),但前提是他们在这一天注册参加会议(会议日有许多研讨会)
  • 举办会议和研讨会的空间有限

@付款

  • 会议/研讨会的付款取决于:

    1. 如果参加者是学生 - 他有一些折扣

    2. 由于较早的与会者报名参加会议,折扣会更大

这是我几天前设计的架构。

在此输入图像描述

提前致谢

database sql-server database-design

0
推荐指数
1
解决办法
2699
查看次数

同一个表中的多对多关系?

我对设计数据库相对较新,我想知道在同一个表中的行之间实现多对多关系的规范方法是什么。

就我而言,我有一个公式表,我想说表中的两个公式是相关的:

公式表:

formula_id SERIAL PRIMARY KEY
name TEXT NOT NULL
formula TEXT NOT NULL
Run Code Online (Sandbox Code Playgroud)

我假设我会创建一个名为 related_formulas 的新表,然后执行以下操作:

formula_relation_id SERIAL PRIMARY KEY
formula_id INT REFERENCES formulas (formula_id) ON DELETE CASCADE
formula_id2 INT REFERENCES formulas (formula_id) ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

但后来我预见到了一些问题,例如阻止同一行中的两个 id 具有相同的值。我确信由于我自己的经验不足,还有其他潜在的问题我没有看到。

有人能指出我正确的方向吗?

database postgresql database-design many-to-many

0
推荐指数
1
解决办法
3893
查看次数

我可以同时使用 DFD 和 ERD

我刚刚在阅读论文时遇到了 DFD,我知道如何使用 ERD 并且我已经阅读了有关 DFD 的内容。但是,我可以同时使用 DFD 和 ERD 来表示我的数据库设计吗?我可以同时使用 ERD 和 DFD 来表示项目中的数据库吗?

database database-design erd database-schema

0
推荐指数
1
解决办法
347
查看次数

Cassandra:如何对传感器数据的时间序列进行建模?

我需要将传感器读数存储在 cassandra(版本 2!)中。有n 个传感器,其中每个传感器最多可以发送m 个具有不同类型(例如Float、Bool、String)的不同值。这些值必须存储在 cassandra 中。稍后,将主要按时间范围查询值。因此,查询可以是“给我从 2016-05-01 09:00 到 2016-05-15 13:00 的所有读数”。可能有按传感器 ID/类型的过滤器,但主要查询始终是时间。(因此查询可能是“给我 2016 年 5 月 5 日以来传感器 1 和 5 的所有数据”,但很可能不是“给我传感器 1 和 5 的所有数据”)。

对于更详细的查询,如果必须扫描所有数据(受时间和可能的传感器 ID 限制)也是可以的。因此,对于查询“给我 2016 年 5 月 5 日以来传感器 5 的所有传感器数据,其中读数的浮点值大于 1000”,如果 cassandra 必须扫描 2016 年 5 月 5 日以来传感器 5 的所有值,那么就可以了!

我读了很多关于数据建模的博客文章/问题(例如[1] [2] [3] [4] [5] [6]),但有些东西已经有很多年了,我不确定它是否仍然存在正确的方法。

我的主要问题是:

  • 我使用什么数据类型作为时间戳(需要毫秒分辨率)
  • 如何定义键?(例如,我是否需要像某些示例使用的每小时主键?如果是,我可以在 cassandra 中合并超过一小时的结果还是需要手动执行此操作?)
  • 如何添加sensorID以便高效查询

传感器数据将始终按顺序插入,因此不会更改以前的数据,也不会添加时间戳低于当前最大值的数据。

database-design cql cassandra

0
推荐指数
1
解决办法
1601
查看次数

消除 ER 模型中的循环

我正在尝试设计一个数据库作为练习问题来学习 ER 模型。简单来说,我有三个实体:UserPostCommentUser我有和之间的一对多关系(用户可以发布帖子),和Post之间有一对多关系(用户可以写很多评论)以及和之间有一对多关系(一篇帖子可以包含很多评论)。显然,这形成了一个循环,我被告知在设计时要避免循环。那么有没有什么巧妙的方法可以简化这些关系来消除环路呢?或者也许有一种通用算法可以消除循环?UserCommentPostComment

database-design entity-relationship

0
推荐指数
1
解决办法
3896
查看次数

什么更好?几个较小的数据库或一个大的数据库

我正在做学习外语单词的应用程序,所以我将这些单词存储在我的数据库中。例如,这些单词分为3 个难度级别。每个级别都由一些单词组组成,这些组引入了 SQLite 数据库的表。我使用SQLiteOpenHelper作为应用程序和数据库之间的通信。

现在我的问题。什么是更好的?

  • 创建3 个较小的数据库,每个数据库对应每个级别并使用自己的 SQLiteOpenHelper,因此将 3 个数据库与 3 个开放帮助程序结合在一起。
  • 创建1 个大型数据库,其中有 3 个级别,这意味着很多表,但只有 1 个 SQLiteOpenHelper。

感谢您的任何建议或意见。

sqlite android database-design

0
推荐指数
1
解决办法
881
查看次数

第三范式 (3NF)

我有这两张桌子。

桌子

如果我确定它们位于 3NF 中,这是正确的方法吗?我的答案:

StaffDetails( StaffID , SName, DOB, DivisionNo*)
Division( DivisionNo , DivName, DivSupervisorID)
StaffProject( StaffId *, ProjectNo *, SName, ProjectName, HoursAssigned)
项目(项目编号, 项目名称)

主键是粗体的,但是星号后面的原因是什么?

database database-design third-normal-form database-normalization

0
推荐指数
1
解决办法
1489
查看次数

根据变体和价格进行产品的数据库架构设计

我们正在为电子商务应用程序和网站设计数据库。我们遇到了一个障碍,使我们在搜索和实验中陷入困境,但没有一个解决方案有效,因为数据中存在冗余。

我们做了一些被拒绝的设计。我不会展示所有的设计,但我会在这里展示其中的一些设计以及我们即将实现的最后设计之一。

  1. 这是我们拒绝的第一个设计,因为它过于标准化并且过于复杂。

ERD

  1. 第二个设计是同样的事情。

ERD

  1. 这是我们最后尝试的设计,但过于简化,冗余会很多。

ERD

之后,我们尝试搜索并寻找一种能够工作并适合我们之前的设计到其他桌子的设计。我们在这里发现了一个,我们对设计做了一些修改,但它也不适合我们,因为 color_id 和 size_id 会发生冗余,而且它不是外键。

ERD

我们想要设计接受这些情况的表:

  1. 我有一种具有不同颜色和不同尺寸的产品,而且尺寸不取决于颜色,反之亦然,而且它们的价格都相同。

  2. 我有一个产品,它有不同的颜色和尺寸,但尺寸取决于颜色,例如(颜色:红色)有(尺寸:S、M、L),(颜色:黑色)有(尺寸:M、L)和他们有不同的价格。

  3. 我有一个产品,它有不同的尺寸,价格变化取决于尺寸,例如产品表(尺寸:S)和(价格:50 美元),但(尺寸:L)有(价格:100 美元)。但它没有颜色变体。

这些产品不会由我们插入,而是由一些卖家插入。颜色和尺寸将是下拉菜单中的所有选择。并且尺寸将仅根据类别显示。例如,类别上衣只有 (S、M、L...),没有其他尺寸

mysql database-design relational-database entity-attribute-value

0
推荐指数
1
解决办法
6340
查看次数

规范化数据库中表的空值

我有两个表,“警察和违规”(警察拥有警察的数据,而“违规”则包含所有违规停车的数据),其基本思想是警察可以取消任何数量的违规行为,但只有一个违规行为可以被一次取消因此,从本质上讲,它可以看作是(警察PK(用户名))1:M(违规PK(违规#))现在,违规表会将警察的用户名作为外键。现在,如果其中一位警察取消了特定的违规行为,那么还将添加该警察的用户名(取消日期和时间),而不是此名称,在违规表中它将具有空值。

问题是,当在数据库中插入一个违反项时,违反表中属于该策略的字段为NULL,而我希望避免使用此NULL值。[我的意思是,(用户名,日期,时间)只有在警察取消违规行为时才有价值,这意味着将违规状态更新为要取消。]

database null database-design relational-database database-normalization

-1
推荐指数
1
解决办法
235
查看次数