請看看下面的SQL: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和Deletion中刪除。在上述財務中,2將被刪除,但銷售,1不會因爲銷售,1最近的決定是0(錯誤)。
我相信這是一個相當糟糕的設計。我相信數據集和ID應該在不同的表中,例如不是DatasetToID。最初的開發者在他離開之前似乎不同意。如果我錯了,我會流浪。
在我看來是的。數據庫中的數據集應使用外鍵標準化。 – harsh8888 2013-02-18 19:04:08
從數據中,ID似乎是* DataSet中的序列號*。你會選擇什麼樣的結構? – 2013-02-18 19:04:29
一個好的數據庫設計是一門藝術,我自己支持幾個系統,而差的db設計很常見 – Machinegon 2013-02-18 19:04:38