【发布时间】:2015-02-26 04:29:18
【问题描述】:
请参阅下面的 DDL:
CREATE TABLE dbDeletion
(
reference INT IDENTITY PRIMARY KEY,
reviewreference INT,
PersonID INT,
EventID INT,
[delete] BIT,
Deleted BIT,
Checked BIT
)
INSERT INTO dbdeletion
(reviewreference,
personid,
eventid,
[delete],
deleted,
checked)
VALUES (1,1,4,0,0,0),
(2,2,4,1,0,1),
(3,1,4,1,1,0)
我相信这个设计是第二范式,但我想检查一下。
我认为它是第二范式的原因是因为“已删除”和“已检查”属性,即每次将记录标记为删除时 (dbdeletion.delete=1),然后检查记录以查看是否它可以被删除。如果可以删除,则将其删除并将 dbdeletion.deleted 设置为 1,否则将 dbdeletion.checked 设置为 1。
当 dbdeletion.deleted 设置为 1 时,设置如下:
update dbdeletion set deleted=1 where PersonID=@PersonID and EventID=@EventID
当 dbdeletion.checked 设置为 1 时,设置如下:
update dbdeletion set checked=1 where PersonID=@PersonID and EventID=@EventID
上面的两条 SQL 语句更新了 1 行或多行。因此我相信这不是第三范式。对吗?
【问题讨论】:
标签: sql sql-server database-normalization