1

我们应该创建关系数据库,而不是平面结构。您创建与其他表有关系的表。您进行规范化以删除重复,并进行反规范化以提高性能。这一切都说得通。但是,我很难找到一个好的机制来插入关系结构。是否没有将记录插入关系结构的良好机制。有没有类似的东西:

INSERT INTO x LEFT JOIN y ON x.id = y.id VALUES(...)?

我能想到的最好的方法是一个存储过程:

INSERT INTO x
SELECT id FROM x (or @@id)
INSERT INTO y

这似乎与整个关系模型背道而驰......

它相当于没有连接的插入。我们会忍受不得不进行多项选择并将结果自己连接在一起吗?

4

1 回答 1

1

您进行规范化以删除重复,并进行反规范化以提高性能。

您进行规范化以删除某些类型的更新异常。您进行非规范化以提高 SELECT 性能,通常以牺牲更新性能和更新异常为代价。

关系模型本身不仅支持可更新视图,它还需要可更新视图。但据我所知,这仍然是一个研究领域;技术问题很严重,尤其是在大多数情况下您必须支持对视图的更新时。

当前的 SQL 产品充其量只能提供有限的支持。(而且 SQL 离关系型还有很远的距离。)多年来,我认为如果我们想要可更新的视图,我们都已经开始期望必须编写触发器。

在某些时候,无论您是在应用程序代码、触发器还是存储过程中执行此操作,您都会发现自己卡在事务中包含多个 INSERT 语句。

于 2012-10-22T21:39:16.153 回答