Questions tagged «relational-database»

关系数据库是由关系变量(也称为* relvars *,* R-tables *或仅* tables *)组成的数据库。关系数据库的定义,操作和完整性规则基于与关系代数和微积分等效或相似的关系运算。关系数据库原理是数据管理理论和实践的重要部分的基础。

7
在关系数据库中存储分层数据有哪些选择?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 好的概述 一般来说,您需要在快速读取时间(例如,嵌套集)或快速写入时间(邻接列表)之间做出决定。通常,您最终会得到以下最适合您的选项的组合。以下内容提供了一些深入的阅读: 嵌套间隔与邻接列表的另一比较:邻接列表,物化路径,嵌套集和嵌套间隔的最佳比较。 分层数据模型:幻灯片,其中对折衷和示例用法进行了很好的解释 在MySQL中表示层次结构:特别是对嵌套集的很好概述 RDBMS中的分层数据:我见过的最全面,组织最完整的链接集,但解释方式不多 选件 我知道的和一般功能: 邻接表: 列:ID,ParentID 易于实现。 廉价节点移动,插入和删除。 昂贵的查找级别,祖先和后代,路径 通过支持它们的数据库中的公用表表达式避免N + 1 嵌套集(又名修改后的预排序树遍历) 列:左,右 廉价祖先,后裔 O(n/2)由于易失性编码,非常昂贵的移动,插入,删除 桥接表(又名闭包表/ w触发器) 使用单独的联接表,并带有:祖先,后代,深度(可选) 便宜的祖先和后裔 写入O(log n)用于插入,更新,删除的成本(子树的大小) 标准化编码:适合联接中的RDBMS统计和查询计划程序 每个节点需要多行 沿袭列(又名物化路径,路径枚举) 栏:沿袭(例如/ parent / child / grandchild / etc ...) 通过前缀查询的廉价后代(例如LEFT(lineage, #) = '/enumerated/path') 写入O(log n)用于插入,更新,删除的成本(子树的大小) 非关系:依赖于数组数据类型或序列化的字符串格式 嵌套间隔 类似于嵌套集,但具有实数/浮点数/十进制数,因此编码不会不稳定(廉价的移动/插入/删除) …

7
什么时候以及为什么数据库连接昂贵?
我正在对数据库进行一些研究,并且正在研究关系数据库的一些局限性。 我知道大表的联接非常昂贵,但是我不确定为什么。DBMS需要执行什么操作才能执行联接操作,瓶颈在哪里? 非规范化如何帮助克服这一费用?其他优化技术(例如,索引编制)如何提供帮助? 欢迎亲身经历!如果您要发布资源链接,请避免使用Wikipedia。我知道在哪里可以找到。 与此相关,我想知道BigTable和SimpleDB等云服务数据库使用的非规范化方法。看到这个问题。



4
联接顺序在SQL中重要吗?
无论性能如何,下面的查询A和B都会得到相同的结果吗?C和D呢? -- A select * from a left join b on <blahblah> left join c on <blahblan> -- B select * from a left join c on <blahblah> left join b on <blahblan> -- C select * from a join b on <blahblah> join c on <blahblan> -- D select …

10
存储时间序列数据,是关系数据还是非关系数据?
我正在创建一个系统,该系统使用SNMP(可能)每5分钟间隔以不同的指标(例如CPU使用率,磁盘使用率,温度等)轮询设备以获取数据。最终目标是以时间序列图的形式向系统用户提供可视化效果。 过去,我曾研究过使用RRDTool,但由于它无限期地存储捕获的数据对我的项目很重要,因此拒绝了它,并且我希望对捕获的数据进行更高级别和更灵活的访问。所以我的问题是真的: 关系数据库(例如MySQL或PostgreSQL)或非关系数据库或NoSQL数据库(例如MongoDB或Redis)在查询图形数据时的性能更好。 关系型 给定一个关系数据库,我将使用一个data_instances表,该表中将存储为所有设备测量的每个指标捕获的数据的每个实例,具有以下字段: 领域: id fk_to_device fk_to_metric metric_value timestamp 当我想为特定设备上的特定指标绘制图形时,我必须查询此单表以过滤掉其他设备,并分析该设备的其他指标: SELECT metric_value, timestamp FROM data_instances WHERE fk_to_device=1 AND fk_to_metric=2 该表中的行数为: d * m_d * f * t 其中d是的数量的装置,m_d是累计度量的数目被记录为所有设备,f是频率在其中数据被轮询和t是总量时间系统已收集数据。 如果用户一年每5分钟记录3台设备的10个指标,那么我们的记录将不足500万条。 指标 如果没有索引fk_to_device并且无法fk_to_metric扫描此不断扩展的表,则将花费太多时间。因此,索引上述字段以及timestamp(用于创建具有局部时间段的图形)都必须是索引。 非关系(NoSQL) MongoDB具有集合的概念,与表不同的是,这些表可以以编程方式创建而无需设置。有了这些,我就可以划分每个设备的数据存储,甚至是每个设备记录的每个指标。 我没有使用NoSQL的经验,也不知道它们是否提供任何增强查询性能的功能(例如索引),但是上一段建议在数据存储在NoSQL下的结构中执行大多数传统的关系查询工作。 未定 具有正确索引的关系解决方案会在一年之内减少吗?还是NoSQL方法的基于集合的结构(与我对存储数据的思维模型匹配)提供了明显的好处?


6
3NF和BCNF的简单区别(必须能够向8岁儿童解释)
我已经读过这句话: 数据取决于键[1NF],整个键[2NF],而仅取决于键[3NF]。 但是,我很难理解所谓的3.5NF或BCNF。这是我的理解: BCNF比3NF严格 表格中任何FD的左侧必须是超级键(或至少是候选键) 那么,为什么有些3NF表不在BCNF中?我的意思是,3NF引号明确表示“除了密钥”,这意味着所有属性仅取决于主键。毕竟,主键是候选键,直到被选为我们的主键为止。 到目前为止,如果对我的理解有任何不妥之处,请纠正我,并感谢您能提供的任何帮助。

5
关系表命名约定
我正在开始一个新项目,并希望从一开始就获取我的表名和列名。例如,我一直在表名中使用复数形式,但是最近学习到的单数形式是正确的。 因此,如果我得到一个表“ user”,然后得到只有该用户拥有的产品,该表应该命名为“ user_product”还是“ product”?这是一对多的关系。 进一步,如果我(出于某种原因)对每个产品有几个产品描述,是“ user_product_description”还是“ product_description”还是“ description”?当然,要设置正确的外键。仅将描述命名是有问题的,因为我也可以具有用户描述或帐户描述等。 如果我想要一个只有两列的纯关系表(很多),该怎么办?“ user_stuff”还是“ rel_user_stuff”之类的?如果是第一个,那么这与“ user_product”有什么区别? 我们非常感谢您提供的任何帮助,如果有人建议您使用某种命名约定标准,请随时进行链接。 谢谢

12
在SQL Server数据库中使用单行配置表。馊主意?
在开发购物车应用程序时,我发现我需要根据管理员的偏好和要求保存设置和配置。该信息可以是公司信息,运输帐户ID,PayPal API密钥,通知首选项等任何信息。 创建表以在关系数据库系统中存储单行似乎非常不合适。 存储此信息的适当方法是什么? 注意:我的DBMS是SQL Server 2008,并且编程层是使用ASP.NET(在C#中)实现的。

9
NoSQL用例[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 最近,NoSQL在我们的行业中引起了很多关注。我对人们在关系数据库存储上使用最佳用例的想法非常感兴趣。是什么促使开发人员认为特定的数据集更适合NoSQL解决方案。我对MongoDB和CouchDB特别感兴趣,因为它们似乎在PHP开发方面获得了最多的报道,这是我的重点。

4
如何为每种产品具有许多参数的多种产品设计产品表
我在表格设计方面没有太多经验。我的目标是创建一个或多个满足以下要求的产品表: 支持多种产品(电视,电话,PC等)。每种产品都有一组不同的参数,例如: 手机将具有颜色,尺寸,重量,操作系统... PC将具有CPU,HDD,RAM ... 参数集必须是动态的。您可以添加或编辑所需的任何参数。 没有每种产品的单独表,如何满足这些要求?

5
多个表的外键
我的数据库中有3个相关的表。 CREATE TABLE dbo.Group ( ID int NOT NULL, Name varchar(50) NOT NULL ) CREATE TABLE dbo.User ( ID int NOT NULL, Name varchar(50) NOT NULL ) CREATE TABLE dbo.Ticket ( ID int NOT NULL, Owner int NOT NULL, Subject varchar(50) NULL ) 用户属于多个组。这是通过多对多关系完成的,但在这种情况下无关紧要。票证可以由组或用户通过dbo.Ticket.Owner字段拥有。 最正确的方式是什么描述票证与用户或组之间的这种关系? 我在想我应该在票证表中添加一个标志,说明该标志的类型。

1
PostgreSQL外键语法
我有2个表格,您将在下面的posgresql代码中看到。第一个表格的student有两列,一列为student_name,另一列为student_id,这是主键。在我称为测试的第二张表中,该表有4列,一列用于subject_id,一列用于subject_name,然后一列用于在该学科中具有最高分数的学生,该分数最高。我正在尝试使highestStudent_id引用我的students表中的student_id。这是我下面的代码,不确定语法是否正确: CREATE TABLE students ( student_id SERIAL PRIMARY KEY, player_name TEXT); CREATE TABLE tests ( subject_id SERIAL, subject_name, highestStudent_id SERIAL REFERENCES students); 语法highestStudent_id SERIAL REFERENCES students正确吗?因为我看过另一个像highestStudent_id REFERENCES students(student_id)) 请问在postgresql中创建外键的正确方法是什么?


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.