Questions tagged «rdbms»

关系数据库管理系统(RDBMS)是一种数据库管理系统(DBMS),其中数据存储在表中,并且数据之间的关系也存储在表中。

6
关系数据库设计模式?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2个月前关闭。 改善这个问题 设计模式通常与面向对象的设计有关。 有用于创建和编程关系数据库的设计模式吗? 当然,许多问题必须具有可重用的解决方案。 示例包括表设计,存储过程,触发器等的模式。 是否存在类似于martinfowler.com的此类模式的在线存储库? 模式可以解决的问题示例: 存储分层数据(例如,具有类型的单个表与具有1:1密钥和差异的多个表...) 存储具有可变结构的数据(例如,通用列vs xml vs分隔列...) 对数据进行非规范化(如何在影响最小的情况下进行处理等)




8
检查对SQL Server表的更改?
如何在不使用触发器或不以任何方式修改数据库结构的情况下监视SQL Server数据库中对表的更改?我首选的编程环境是.NET和C#。 我希望能够支持任何SQL Server 2000 SP4或更高版本。我的应用程序是另一家公司产品的附加数据可视化。我们的客户群有成千上万,因此我不想在每次安装时都提出修改第三方供应商表的要求。 通过“改变到餐桌”我平均变化表数据,而不是更改为表结构。 最终,我希望更改能够触发我的应用程序中的事件,而不是必须间隔检查更改。 根据我的要求(不进行触发器或架构修改,SQL Server 2000和2005),最好的操作方案似乎是BINARY_CHECKSUM在T-SQL中使用该函数。我计划实现的方式是这样的: 每X秒运行以下查询: SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK); 并将其与储值进行比较。如果值已更改,请使用查询逐行浏览表: SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK); 并将返回的校验和与存储的值进行比较。


9
什么是数据库约束?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 什么是数据库约束的明确定义?为什么约束对数据库很重要?约束的类型有哪些?


17
PostgreSQL的隐藏功能
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 改善这个问题 我很惊讶这还没有发布。您在Postgres中了解任何有趣的技巧吗?特别欢迎模糊的配置选项和缩放/性能技巧。 我确定我们可以在相应的MySQL线程上击败9条评论:)

8
标准使用“ Z”而不是NULL来表示丢失的数据?
除了是否应使用NULL之外,我还负责一个现有数据库,该数据库使用NULL表示“丢失或从未输入”数据。它不同于空字符串,它表示“用户设置了该值,并且他们选择了'空'”。 该项目的另一个承包商坚决主张“对于我来说不存在NULL;我从不使用NULL,并且任何人都不应使用NULL”。但是,令我困惑的是,由于承包商的团队确实承认“缺少/从未输入”和“故意空着或由用户指示为未知”之间的区别,因此他们在整个代码和存储过程中使用单个字符“ Z”表示“缺少/从未输入”,在整个数据库的其余部分中的含义与NULL相同。 尽管我们共享的客户要求更改此设置,而我也支持此要求,但是该团队将其称为比我更先进的DBA中的“标准做法”。他们不愿意仅根据我的无知请求更改为使用NULL。那么,有人可以帮助我克服我的无知吗?在SQL专家中,是否有任何标准或一小群人,甚至是一个大声的提倡使用“ Z”代替NULL的人? 更新资料 我有承包商的回应要补充。当客户要求删除特殊值以允许无数据列中的NULL时,他说的是这句话: 基本上,我设计数据库时要尽可能避免NULL。这是基本原理: •不需要在字符串[VARCHAR]字段中使用NULL,因为空(零长度)字符串会提供完全相同的信息。 • 整数字段(例如,ID值)中的NULL可以通过使用数据中永远不会出现的值(例如,整数IDENTITY字段为-1)来处理。 • 日期字段中的NULL会很容易导致日期计算复杂化。例如,在计算日期差异(例如[RecoveryDate]和[OnsetDate]之间的天数差异)的逻辑中,如果一个或两个日期为NULL,则逻辑将爆炸-除非为两个日期都明确允许为NULL。那是额外的工作和额外的处理。如果[RecoveryDate]和[OnsetDate]使用“默认”或“占位符”日期(例如“ 1/1/1900”),则数学计算可能会显示“异常”值-但日期逻辑不会爆炸。 传统上,NULL处理是开发人员在存储过程中犯错的领域。 在我作为DBA的15年中,我发现最好尽可能避免使用NULL。 这似乎证实了对该问题的大部分消极反应。不是使用公认的6NF方法来设计NULL,而是使用特殊值来“尽可能避免NULL”。我以开放的态度发表了这个问题,很高兴我了解到更多有关“空值有用/空值很邪恶”的辩论,但是现在我很乐意将“特殊值”方法标记为完全废话。 空(零长度)字符串将提供完全相同的信息。 不,不是。在我们正在修改的现有数据库中,NULL表示“从未输入”,空字符串表示“输入为空”。 传统上,NULL处理是开发人员在存储过程中犯错的领域。 是的,但是成千上万的开发人员已经犯下了数千次错误,而且避免这些错误的教训和警告也广为人知并记录在案。如此处所述:无论您接受还是拒绝NULL,缺失值的表示都是一个已解决的问题。无需仅仅因为开发人员不断犯下易于克服(且易于识别)的错误而发明新的解决方案。 作为一个脚注:我已经成为DBE和开发人员已有20多年了(对于我来说,足够时间了解数据库工程师和数据库管理员之间的区别)。在我的整个职业生涯中,我一直都处于“ NULL是有用的”阵营,尽管我知道几个非常聪明的人不同意。我对“特殊价值”方法非常怀疑,但是对“如何避免以正确方式避免NULL”的学术知识不够扎实。我一直喜欢学习新事物,而且20年后我仍然有很多东西要学习。感谢所有为此做出有益讨论的人。

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.