Tag: 数据库设计

销售点和库存数据库架构

我正在尝试创建一个基本的销售点和库存管理系统。 有些事情需要考虑: 整个系统中的产品始终相同(相同的ID),但库存(每个产品的可用销售单位)在每个位置是唯一的。 位置Y和Z可以都具有产品X的销售单位,但是如果例如从位置Y销售两个单元,则位置Z的库存不应受影响。 它的库存单位仍然完好无损。 从位置Y销售产品X的一(1)个单位,意味着位置Y的库存应从其库存中减去一个单位。 从那以后,我想到了这些表: 地点 ID 名称 制品 ID 名称 交易 ID 描述 inventories_header ID LOCATION_ID PRODUCT_ID inventories_detail inventories_id TRANSACTION_ID 单位成本 单价 数量 orders_header ID 日期 总计(根据orders_detail数量*价格计算;仅用于未来的数据validation) orders_detail ORDER_ID TRANSACTION_ID PRODUCT_ID 数量 价钱 好的,那么,有什么问题吗? 当然。 如何跟踪单位成本的变化? 如果有一天我开始为特定产品支付更多费用,我需要以某种方式跟踪边际效用( (cost*quantity) – (price*quantity) = marginal utility )。 我认为库存主要是为了这个。 我不会另外关心。 人际关系是否稳固? 我仍然很难想到这些地点是否有库存,或者库存是否有多个地点。 这令人抓狂。 您如何保持/了解您当前的库存水平? 由于我必须将库存表分开以跟上成本更新,我想我只需要将库存中的所有数量相加即可。 您想分享任何建议吗? […]

如何与许多父母建立许多自我指涉关系?

我想以最简单的方式模拟以下内容: 技能有许多依赖技能。 每项技能都应该独立存在,技能可能具备其他技能,这些技能是必备技能。 例如: Skill: Front-End Development Has Dependent Skills -> [HTML, CSS, SCSS] Skill: Web-Design Has Dependent Skills -> [HTML, CSS] Skill: HTML 我希望能够做到: @front_end_development.dependent_skills ##or a more semantic mapping 我可能想走上树,但我想不出最好的名字。 也许我想通过HTML引用Web-Design依赖它。 这种自我指涉是否有意义,或者事实是这会伤害我的大脑代码味道并乞求其他东西是理想的? 这一切都取决于其他技能的技能。 用mongo模拟这个会更好吗?

需要另一个特定模型的多对多关系

我通过Supply – 和Origin -models在超市 , 产品和品牌之间建立了多对多的关系。 我还想在我的超市里存储我所拥有的特定产品品牌组合。 我想到了另一个模型(我称之为Specific_Combination ,我将存储:supermarket_id , :product_id和:brand_id 。 class Supermarket :supplies end class Supply < ActiveRecord::Base belongs_to :product belongs_to :supermarket end class Product :supplies has_many :origins has_many :brands, :through => :origins end class Origin < ActiveRecord::Base belongs_to :products belongs_to :brands end class Brand :origins end 现在,我认为可以用来存储特定产品品牌组合的课程 class Specific_Combination < ActiveRecord::Base # […]

多列数据库索引和查询速度

我正在部署一个Rails应用程序,该应用程序将来自各种第三方提供商的优惠券数据聚合到一个可搜索的数据库中。 针对每个优惠券在四个字段中进行搜索:标题,优惠券代码,描述和到期日期。 因为这些第三方提供商中的一些在保持数据排序方面做得相当糟糕,并且因为我不希望重复的优惠券进入我的数据库,所以我在这四列中实现了一个独特的复合索引。 这可以防止同一张优惠券不止一次插入我的数据库。 鉴于我正在搜索这些列(通过简单的WHERE column LIKE %whatever%暂时的WHERE column LIKE %whatever%匹配),我希望这些列能够通过索引它们来获得速度增益。 所以这是我的问题: 所有列的复合索引是否会提供相同的搜索速度增益,就好像我已经为每列应用了单独的索引一样? 或者它只保证行之间的唯一性? 使问题复杂化的是我正在开发Rails,所以我的问题既适用于SQLite3和MySQL(以及我们将来可能移植到的任何内容),而不是一个特定的RDBMS。 我的猜测是索引会加速搜索各个列,但我真的没有足够的“幕后”数据库专业知识来对这个判断充满信心。 感谢您提供专业知识。

如何在Rails应用程序中禁用迁移function?

背景 我们分别设计数据库模型和应用程序模型(RDMBS架构师与OOP工程师)。 从我所看到的Rails与域/密钥正常forms相比,Rails迁移不能轻易复制精心设计的企业RDBMS的所有function(如果有的话),因此我们不迁移,而是使用其他工具来构建数据库(没关系对象 – 关系阻抗不匹配的问题)。 对于我们来说,数据完整性和数据库性能对于冒任何开发人员更改RDBMS模型的风险来说太宝贵 题 无论出于何种原因,我们现在都有一个Rails应用程序,它通过迁移破坏了数据库更改。 如何在现有Rails应用程序中干净地禁用此function? 我有我的理论,但我想知道世界的想法。

最好使用空值作为”还是NULL?

数据库架构 我有这个字段: 标题(字符串) 字幕 描述(字符串) 最好将默认值设置为空字符串”或NULL ? 为了更好的读/写和大小存储性能

跟踪变更历史的数据库结构

我正在将项目管理系统的数据库设计作为个人项目,我遇到了麻烦。 我想实现票务系统,我希望票证看起来像Trac中的票证 。 我会用什么结构来复制这个系统? (我在任何系统上都没有成功安装trac所以我真的看不到它在做什么) 注意:尝试在任何版本中存储或显示票证都没有意义。 我只需要一个变化的历史。 我不想存储额外的数据。 另外,我在文本字段中使用序列化数组实现了这样的function。 我不想再将其作为解决方案来实现。 编辑:我只关注数据库结构。 触发/回调不是一个真正的问题。

Rails – 多索引密钥关联

似乎有许多方法可以处理多个外键关联。 我接触过它的每一种方式都有它们的缺点,而且我是Rails的新手,我确信其他人遇到了类似的情况,我可能正在研究很久以前解决的问题。 我的问题是: 什么是处理多索引键关联的有效方法,同时仍保留所有其他Rails sql修饰符(例如:include等)? 我的情景是: 我有一个表关联如下(简化),用于通过链接将人们连接到其他人: People +—-+———–+ | id | name | +—-+———–+ | 1 | Joe | +—-+———–+ | 2 | Sally | +—-+———–+ | 3 | Bob | +—-+———–+ Links +—-+———–+———+ | id | origin_id | rcvd_id | +—-+———–+———+ | 1 | 2 | 1 | +—-+———–+———+ | 2 | 1 […]

Ruby on Rails中多列的索引

我正在实现跟踪用户阅读的文章的function。 create_table “article”, :force => true do |t| t.string “title” t.text “content” end 到目前为止,这是我的迁移: create_table :user_views do |t| t.integer :user_id t.integer :article_id end 始终会查询user_views表以查找两列,而不仅仅查找一列。 我的问题是我的索引应该是什么样子。 这些表的顺序是否存在差异,是否应该有更多选项或其他。 我的目标数据库是Postgres。 add_index(:user_views, [:article_id, :user_id]) 谢谢。 更新: 因为在两列中只能存在一行包含相同值的行(因为在知道user_id是否已读取article_id时),我应该考虑:unique选项吗? 如果我没弄错的话,这意味着我不必自己进行任何检查,只需在每次用户访问文章时插入即可。

Rails – 每个子域单独的数据库

我即将开始编写一个Rails应用程序,它允许客户端拥有一个单独的子域来访问我们的应用程序。 从数据安全的角度考虑,如果每个客户端的访问权限真正限制在他们的数据库中会很好,这样,如果生产代码中存在错误,他们只能访问自己的数据库,而不能访问任何其他数据库。客户端。 我知道如何做我想要的代码,但我想知道是否有一个更简单的解决方案,我可能会失踪。 您将如何保护客户端数据,以便在出现错误或黑客威胁时,他们的数据不太可能被暴露?