小编Sar*_*rov的帖子

对可为空的软删除标志设置唯一约束是否有意义?

所以我们目前有以下几点:

MYTABLE
COLUMN: ID (INTEGER Primary key, auto-incrementer)
COLUMN: START (DATE)
COLUMN: COMPANYID (INTEGER, Foreign key to COMPANY)
COLUMN: DELETED (INTEGER)
CHECK: DELETED = 0 OR DELETED = 1
Run Code Online (Sandbox Code Playgroud)

现在,要求允许无限删除记录,但只允许每个日期+公司的单个未删除记录。

我建议将架构更改为:

MYTABLE
COLUMN: ID (INTEGER Primary key, auto-incrementer)
COLUMN: START (DATE)
COLUMN: COMPANYID (INTEGER, Foreign key to COMPANY)
COLUMN: ACTIVE (Nullable INTEGER)
CHECK: ACTIVE = 1 OR ACTIVE IS NULL
UNIQUE: START, COMPANYID, ACTIVE
Run Code Online (Sandbox Code Playgroud)

虽然我的同事认为这“在约束上做得太过分了”,而我们应该只依赖应用程序中的唯一性检查。

这里有普遍接受的最佳实践吗?

database-design unique-constraint db2-midrange

5
推荐指数
1
解决办法
205
查看次数