请看看下面的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