我有一个关于如何更新不同表中的多个列的问题。
我正在使用ASP.NET的实体框架
这个想法从这里开始:假设我有以下表格:
CREATE TABLE Movies
(
Id int,
Title varchar(255),
);
CREATE TABLE Genres
(
Id int,
Name varchar(255),
);
CREATE TABLE MovieGenres
(
Id int,
MovieId int,
GenreId int,
);
因此第一个表格将包含电影,第二个表格将包含流派,第三个表格将包含每部电影的流派(每部电影可以有多个类型)
什么是最好的,保持第三个表格,所以当我想获得任何电影的类型时,我从第三个表中得到所有GenreID
然后我从{{得到每个类型的名称1}}表?
或:
将新列添加到第三个表Genres
,所以当我为任何电影插入新类型时,我插入GenreName
,然后当我想获得任何类型电影我直接从第三个表中选择了类型名称?如果是这样,我如何使用ON_UPDATE来做到这一点?我的意思是如果我更新第二个表中任何类型的名称,类型名称也会在第三个表上自动更新。
我想从概念和经验的角度来了解哪种方法最好。
答案 0 :(得分:1)
“将新列添加到第三个表格,即GenreName,所以当我为任何电影插入新类型时,我插入MovieId,GenreId,GenreName”
这是一个坏主意。您的第三个表应该存储类型和电影表的ID信息以关联它们。
首先,它会导致冗余的Name
信息。想象一下,MovieGenres
表存储多个GenderId
信息,因此该表存储多个Name
信息。如果只想更新一个GenderName,则必须更新所有MovieGenres
行。 无法管理和维护。
只需在查询中使用join
关键字一起选择它们,或者您可以将导航属性用于实体框架。