请看下面的SQL:
create table DatasetToID(
Dataset varchar(100),
ID INT,
Name varchar(100),
age varchar(100),
primary key (dataset,id)
)
INSERT INTO DatasetToID VALUES ('Sales', 1, 'Ian Ratkin','30')
INSERT INTO DatasetToID VALUES ('Finance', 1, 'Bert Edwards','56')
INSERT INTO DatasetToID VALUES ('Production', 1, 'Marie Edwards','56')
INSERT INTO DatasetToID VALUES ('Sales', 2, 'Karen Bromley','30')
INSERT INTO DatasetToID VALUES ('Finance', 2, 'Steven Tardy','56')
INSERT INTO DatasetToID VALUES ('Production', 2, 'Eric Bishop','56')
create table Deletion(
Dataset varchar(100),
ID INT, decision bit,
date datetime
)
INSERT INTO Deletion VALUES ('Sales', 1, 1, '2013-01-01')
INSERT INTO Deletion VALUES ('Finance', 2, 1, '2013-01-01')
INSERT INTO Deletion VALUES ('Sales', 1, 0, '2013-02-02')
我支持的一个直播系统就是这样设计的。如果最近的删除决定(位)为真,则在每个月底从 DatasetToID 和删除中删除记录。在上述 Finance 的情况下,将删除 Sales,1,但不会删除 Sales,1,因为 Sales,1 最近的决定是 0(假)。
我认为这是一个相当糟糕的设计。我相信数据集和 ID 应该在不同的表中,例如不是 DatasetToID。最初的开发者在离开之前似乎不同意。如果我错了,我会徘徊。