Questions tagged «database-design»

数据库的概念模式和/或逻辑模型和/或物理设置的开发。

1
PostgreSQL如何物理排序磁盘上的新记录(在主键上的集群之后)?
需要知道PostgreSQL如何排序磁盘上的记录。在这种情况下,我想利用docs中所述的索引组合,据我所知,它使用位图来获取匹配的行并根据其物理位置返回它们。该表已通过其主键进行了聚类。 据我了解,PostgreSQL在聚类完成后不会自动继续进行聚类(尽管它确实记得它是根据某个索引进行聚类的)。现在,由于这是主键,所以我想知道物理存储顺序是否符合该顺序(如果为true,我想利用它来进行特定查询)。 总之,PostgreSQL如何排序其新记录,尤其是在集群之后? 非常感谢!

1
设计用于需求预测分解的简单方案
我正在做一个简单的数据库设计任务,作为一个培训练习,在这种情况下,我必须针对以下情况提出基本的架构设计: 我具有产品的父子层次结构(例如,“原材料”>“在制品”>“最终产品”)。 在每个级别下订单。 在接下来的6个月内,应在每周的存储桶中查看订单数量。 可以针对每个产品级别进行需求预测。 未来6个月内任何一周的需求预测都可以在今天完成。 未来6个月将对每周的水桶进行需求预测。 需求预测通常在层次结构的较高级别(原始物料或在制品级别)进行,必须将其分解为较低级别(最终产品)。 有两种方法可以将需求预测从较高级别分解为较低级别: 用户指定最终产品的百分比分布。假设有一个正在进行的工作的1000的预测..用户说我要在存储区10中为最终产品1分配40%,为最终产品2分配60%。然后从现在开始第10周(星期日至星期六),预测值最终产品1的价格为400,最终产品2的价格为600。 用户说,只需根据针对第5个桶中的最终产品下达的订单进行分解,而第5个桶中第1个产品和第2个产品的订单分别为200和800,则EP1的预测值为((200/1000)* 100)%对于EP2,将是“进行中的工作”预测的((800/1000)* 100)%。 在接下来的6个月中,应可以按周的时段查看预测,理想的格式应为: product name | bucket number | week start date | week end date | forecast value | created_on PRODUCT_HIERARCHY表可能如下所示: id | name | parent_id __________________________________________ 1 | raw material | (null) 2 | work in progress …


1
用于处理多个支付网关的架构设计
这更多是一个需要反馈的问题。我正在设计一个处理多个支付网关的数据库。支付网关通常需要在付款之前有一张表,用于显示订单详细信息(这对于所有PG来说都是常见的),以及一个用于交易详细信息的表,用于存储在付款后的响应。 现在要处理多个支付网关,我可以保留一个交易表,用所有支付网关的所有可用字段填充该表,并在该字段中说明该行来自哪个PG。 或者,我可以为每个PG创建单独的事务表中包含前缀paypal_或bank_等等,每一个都具有场他们每个人的需要。 我只是不确定哪种方法更理想。还需要针对以后可能遇到的类似情况学习它。

4
是否有充分的理由将日期和时间保留在单独的列中?
我试图了解我们的软件供应商决定将日期和时间保留在单独的列中。例如,当行被创建或更新时。时间和日期都是DateTime列。我们正在使用SQL Server 2005。 该数据库保存着我们ERP系统的数据,我相信最大的表包含约300万行。大多数表大约在10万至1000万行之间。 我个人默认情况下会为单个时间戳选择一个DateTime。这样可以简化时差计算,并且可以轻松地从时间戳中提取日期和时间部分。它还将消耗更少的空间。 是将日期和时间分开是不好的做法,还是我不理解的设计中有什么很棒的东西?

1
用用户和组建立数据库的基本模型是什么?
我正在尝试为网站的基本安全系统找到最佳方法。我知道我想要用户和组。 我以为我有: user_table user_id user_name ... group_type group_id group_name parent_id ... group_table id user_id group_id 第一个是用户,第二个是组,第三个是连接两者的中介表。一个用户有多个组。 听起来还好吗?

2
存储XML数据的数据类型:VARCHAR(MAX)或XML
我正在使用SQL Server 2008为一组新资源定义一个架构...在这种情况下,每个记录(例如row)将需要存储XML片段。不时 尽管不经常 我将需要查询XML以查找元素和属性值。如果任由我自己设计,尽管倾向于让我相信这是有问题的,但我倾向于使用xml数据类型。这使我想到了我的问题。 在这种情况下,尝试决定将XML存储在xml列与varchar(MAX)列之间时,应该考虑哪些因素 如果有帮助,这里有一些其他详细信息: 对于这些片段(例如XSD的)使用架构的决定尚未决定 碎片的大小范围从小到很大 所有XML的格式都正确 在一天的过程中,需要大约3个月的时间,通过在线查询支持收集多达10,000个碎片 对XML的查询将全天进行,但是很少会出现这种类型的并发查询。

6
记录用于迁移的数据库映射的最佳方法
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 5年前关闭。 我正在一个项目中,该项目包括用于迁移的映射数据库元素,我想知道其他人正在使用哪些工具来执行此操作? Excel是记录简单映射的一种非常灵活的方式,但是我想知道是否有人遵循他们所遵循的特定方法论或推荐使用的其他工具?



4
如何设计一个关系数据库表来存储友谊关系?
我想设计一个表来存储我的Web项目中的友谊关系 它至少应满足以下四个条件: 发送添加好友请求的人,例如(如果从A到B,则此列为A) 谁收到添加朋友的请求,例如(如果从A到B,则此列为B) 当前状态,例如(0表示拒绝,1表示接受,2表示未处理 我们的朋友关系是双边的 如果您有任何经验,欢迎任何建议 我当前的设计(我认为现在很糟糕)是这样的, 这些是专栏 frienshipId fromUserId toUserId status requestTime

2
集群索引现在必须-为什么?
早些时候,关于是否(始终)参与/避免聚集索引的辩论/讨论对我来说不是结论性的。 好吧,我知道有时要结合适当的特定目的和上下文来使用它们。 SQL Azure数据库群集索引要求: “ SQL Azure不支持没有聚簇索引的表。表必须具有聚簇索引。如果创建的表没有聚簇约束,则必须先创建聚簇索引,然后才能对表进行插入操作” 不符合先前的结论,理由和解释。 在先前的解释中,我遗漏了没有任何例外地严格施加聚集索引的基本原理是什么?

5
互斥的多对多关系
我有一个表containers,可以有几个表一个多一对多的关系,让我们说那些是plants,animals和bacteria。每个容器可以包含任意数量的植物,动物或细菌,并且每个植物,动物或细菌可以位于任意数量的容器中。 到目前为止,这非常简单,但是我遇到的问题是每个容器应仅包含相同类型的元素。例如包含植物和动物的混合容器应成为数据库中的约束违例。 我的原始模式如下: containers ---------- id ... ... containers_plants ----------------- container_id plant_id containers_animals ------------------ container_id animal_id containers_bacteria ------------------- container_id bacterium_id 但是使用这种模式,我无法提出如何实现容器应该是同质的约束。 有没有一种方法可以使用参照完整性来实现这一点,并确保在数据库级别上容器是同质的? 我为此使用Postgres 9.6。

1
为什么我们不能有多个级联路径?
您会看到有关多个级联路径的许多问题被问到。例如: /programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths /programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1 /programming/27613117/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths-s 然而,从我所看到和理解,这是完全确定要删除子记录很多,而不仅仅是一个的相关主记录的删除的状态。 虽然有一个问题是说SQL Server试图通过防止这种情况发生来确保安全,但我真的不明白,如果我们有多个级联路径,可能会出什么问题?它有什么问题可以使其变得安全? 我希望有人可以用简单明了的方式向我解释,最好使用示例说明在多个级联路径的情况下可能出问题的地方。

1
在PostgreSQL中使用许多模式而不是仅使用一种模式的利弊?
对于拥有30万个帐户(并且还在不断增长)的大型SAAS应用程序(由PostgreSql 9.4支持),每个帐户使用模式对数据进行分区与将所有数据置于一个模式中并使用外键进行数据交换的利弊是什么?在查询中将其分区? 我知道过去使用许多模式时pg_dump的速度很慢,但不确定今天是否是如此。我也知道数据库结构的任何更改都必须在所有模式上进行。而且我知道,从正面来看,将模式从一台物理服务器移动到另一台物理服务器很容易,并且可以从备份中还原模式,更不用说以这种方式分区数据了。 那么,我缺少哪些利弊?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.