【发布时间】:2013-07-25 19:18:36
【问题描述】:
在创建表时,我通常使用几个额外的列来跟踪更改时间和相应的用户:
CREATE TABLE dbo.Object
(
ObjectId int NOT NULL IDENTITY (1, 1),
ObjectName varchar(50) NULL ,
CreateTime datetime NOT NULL,
CreateUserId int NOT NULL,
ModifyTime datetime NULL ,
ModifyUserId int NULL
) ON [PRIMARY]
GO
我现在有一个新项目,如果我继续使用这种结构,我将在每个表上增加 6 个列,并使用这种类型的更改跟踪。时间列、用户 ID 列和地理列。我现在认为向我想要执行此操作的每个表添加 6 列是没有意义的。我想知道以下结构是否更有意义:
CREATE TABLE dbo.Object
(
ObjectId int NOT NULL IDENTITY (1, 1),
ObjectName varchar(50) NULL ,
CreateChangeId int NOT NULL,
ModifyChangeId int NULL
) ON [PRIMARY]
GO
-- foreign key relationships on CreateChangeId & ModifyChangeId
CREATE TABLE dbo.Change
(
ChangeId int NOT NULL IDENTITY (1, 1),
ChangeTime datetime NOT NULL,
ChangeUserId int NOT NULL,
ChangeCoordinates geography NULL
) ON [PRIMARY]
GO
谁能提供一些关于这个小的数据库设计问题的见解,例如常见做法和功能设计?
【问题讨论】:
标签: sql sql-server sql-server-2005 database-design