205得票12回答
如何对数据库中的记录进行版本控制

假设我有一个数据库记录,并且管理员和普通用户都可以更新它。有没有人能提出一个好的方法/架构来版本控制这个表中的每个更改,以便可以将记录回滚到先前的版本? 版本控制是一种跟踪并管理文件系统或软件代码在时间上的变化的技术。针对数据库记录的版本控制也十分必要,因为它允许从历史记录中恢复数据。实现这...

194得票19回答
替代键 Vs 自然/业务键

又来了,老问题仍然存在... 我们是更好使用业务键作为主键,还是使用代理id(即SQL Server identity)并在业务键字段上设置唯一约束? 请提供示例或证明来支持您的理论。

193得票5回答
关系型表命名规范

我正在启动一个新项目,希望正确命名我的表和列。例如,我一直在使用表名的复数形式,但最近才知道单数是正确的。 因此,如果我有一个表user并且只有用户拥有产品,那么这个表应该命名为user_product还是product?这是一对多的关系。 如果我有几个产品描述与每个产品相关联,那么它应该是u...

185得票11回答
如何存储历史数据?

一些同事和我进行了一场关于存储历史数据的最佳方式的辩论。目前,对于某些系统,我使用单独的表来存储历史数据,并保留一个原始表用于当前有效记录。例如,假设我有表FOO。在我的系统下,所有活动记录都会进入FOO,而所有历史记录都会进入FOO_Hist。FOO中许多不同的字段可以被用户更新,因此我希望...

185得票6回答
复合主键中使用可空列有什么问题?

ORACLE不允许主键中的任何列具有NULL值。看起来大多数其他“企业级”系统也是如此。 同时,大多数系统还允许在可为空的列上设置唯一约束。 为什么唯一约束可以有NULL值而主键不能呢?这是基本的逻辑原因,还是技术上的限制?

184得票26回答
在使用数据库时,是否有时候使用一对一关系是有意义的?

我最近在思考规范化问题,但我发现我无法想象出数据库中应该存在1:1关系的情况。 姓名:社会安全号码(SSN)? 我会将它们放在同一个表中。 人员ID:地址ID? 同样,放在同一个表中。 我可以举出无数个1:多或多:多(带有适当的中间表)的例子,但从未碰到过1:1的情况。 我是否漏掉了一些明...

183得票7回答
在数据库中实现评论和点赞功能

我是一名软件开发人员,喜欢编码,但不喜欢数据库...目前,我正在创建一个网站,用户将被允许将实体标记为喜欢(类似于FB),标记它并进行评论。 我在处理此功能的数据库表设计中陷入困境。如果我们只能针对一种类型的事物(例如照片)做到这一点,那么解决方案就很简单。但是我需要为5种不同的事物启用此功...

181得票11回答
标签的数据库设计

您如何设计数据库来支持以下标记功能: 项目可以有大量的标签 搜索带有给定一组标签的所有项目必须很快(项目必须具有所有标签,因此这是AND搜索,而不是OR搜索) 创建/编写项目可能较慢,以实现快速查找/阅读 理想情况下,使用单个SQL语句执行使用(至少)n个给定标签集合标记的所有项目的查...

179得票24回答
我应该给将两个表映射在一起的表起什么名字?

假设我有两个表:Table: Color Columns: Id, ColorName, ColorCode Table: Shape Columns: Id, ShapeName, VertexList 我应该如何称呼将颜色映射到形状的表格?Table: ??? Columns: Colo...

178得票10回答
如何在数据库中有效地建模继承?

在数据库中建模继承的最佳实践是什么? 有哪些权衡(例如可查询性)? (我最感兴趣的是SQL Server和.NET,但我也想了解其他平台如何解决这个问题。)