如何在许多表

时间:2017-11-26 16:23:25

标签: sql entity-framework foreign-keys

我有一个关于如何更新不同表中的多个列的问题。

我正在使用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来做到这一点?我的意思是如果我更新第二个表中任何类型的名称,类型名称也会在第三个表上自动更新。

我想从概念和经验的角度来了解哪种方法最好。

1 个答案:

答案 0 :(得分:1)

“将新列添加到第三个表格,即GenreName,所以当我为任何电影插入新类型时,我插入MovieId,Gen​​reId,Gen​​reName”

这是一个坏主意。您的第三个表应该存储类型和电影表的ID信息以关联它们。 首先,它会导致冗余的Name信息。想象一下,MovieGenres表存储多个GenderId信息,因此该表存储多个Name信息。如果只想更新一个GenderName,则必须更新所有MovieGenres行。 无法管理和维护

只需在查询中使用join关键字一起选择它们,或者您可以将导航属性用于实体框架。