【发布时间】:2012-12-08 21:45:57
【问题描述】:
当我有以下两个表时,StatusTypes 表会被认为是矫枉过正吗?即使用它比不使用它有更多好处吗?
在这种情况下,我不希望为了添加或更改/删除它们而必须在管理后端加载这些状态,但另一方面,我通常不喜欢不使用外键。
我正在寻找支持和反对分离状态类型或将其保留在审核表中的原因。
任何帮助将不胜感激。
-- i.e. NEW, SUBMITTED, UPDATED
CREATE TABLE [dbo].[StatusTypes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](250) NOT NULL,
CONSTRAINT [PK_StatusTypes] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Audits](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Description] [nvarchar](500) NULL,
[Country_Fkey] [int] NOT NULL,
[User_Fkey] [int] NOT NULL,
[CreatedDate] [date] NOT NULL,
[LastAmendedDate] [date] NULL,
[Status_Fkey] [int] NOT NULL,
CONSTRAINT [PK_Audits] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO
【问题讨论】:
-
在数据库中强制执行参照完整性对于数据库正常工作并为其用户提供价值绝对至关重要。因此,我永远不会说强制执行外键(及其可能值)的查找表太多 - 数据库中不能有太多安全预防措施 - 只有太少....
-
这几乎是我的想法,但我想就这种情况获得一些其他意见,因为它可能会发生任何一种情况。谢谢
标签: sql sql-server-2008 database-design