我准备在我创建的电影数据库中填充几个表。 Movies
表已经被创建。它看起来像这样:MySQL:M:N Table链接两个表
movieid INT NOT NULL PRIMARY KEY
title VARCHAR(50)
link VARCHAR(100)
release_date VARCHAR(10)
或许应当指出的是,我使用MySQL-python
和Scrapy
来填充MySQL
数据库这个数据,但也许这并不重要。
我创建了三个尚未填充的附加表格:Producers
,Actors
和Directors
。其中每个看起来像另一个,因为存在id
,name
和movie title
。所以Actors
样子:
actorid INT NOT NULL PRIMARY KEY
actor VARCHAR(40)
title VARCHAR(50) <<<<------ This is the movie title from the Movies tables
现在,我想创建一个表名为Movie To Actor
从Actor
表包含从Movie
表movieid
和actorid
并没有title
列现有的Actors
表。
我估计有两种方法可以做到这一点:
第一种方式:
获取所有的数据到Actors
表title
充当foreign key
和然后创建Movie To Actor
表,加入合适ids
其中movies.title
等于Actors.title
,然后从Actors
中删除title
列。
第二种方式:
这样做是因为我正在填充数据。首先创建Movie to Actor
表,设置关键约束并将其设置为在数据添加到Actors
表时自动更新。我更喜欢这个,因为它使事情变得更容易,我认为在风格上更好。希望有人能指导我如何去做这件事。我想我可以想出如何将MySQL
中的指令推断为MySQL-python
,但在如何做前者方面需要帮助。第一
谢谢您花时间阅读和发布!因此,重申并确保我明白你的想法我应该做的事:我应该首先填充'演员'表,包括'title'列。然后,我应该使用上面编写的'INSERT SELECT'语句填充'movie_actor'表。那么我应该从'Actors'表中删除'title'列(减少冗余)? – DMML
实际上,对于已经存在标题列的任何演员,查询将同时从演员和电影中“选择”。如果确实需要重新设计输入以从演员中删除标题列,并将映射直接放置在movie_actor表中,则不需要填充actors.title的额外步骤。这只是一次性移动。 – ChicagoRedSox
好的。所以,我最初可以这样做'INSERT SELECT',从'Actors'放下'title',然后设置'TRIGGER',以防将来',我决定增加更多的演员? – DMML