我确定我的术语是错误的,这可能是谷歌没有帮助我的原因。无论如何这里是我的问题,也许你可以推断我真正的问题是什么......我希望
好吧,假设我有一个名为MOVIE
的表格,这个表格包含Name
,ReleaseDate
和Staring
的值(列?)现在我的问题是我怎么做Staring
值是否包含多个值?
我是否使用STARS
,Key
,Actor1
等列制作单独的表格Actor2
?来自Staring
表的MOVIE
值指向STARS
表的PK的位置。
键|演员1 |演员2 | .....
---------------------------------------- 01 |鲍勃鲍勃|约翰鲍勃| .......
02 |吉姆鲍勃|约翰鲍勃| .......
然而,问题是该表是静态的,需要预设数量的actor。
或
有没有办法在Actors
表的Staring
值中存储多个actorID(来自MOVIE
表的PK)?例如:
姓名| ReleaseDate | 盯着
-------------------------------------
blah | 1999年| 21,46,392,182,30,blah pt2 | 2001 | 3,11,412
无论如何,在这一点上任何事都会有所帮助,我们将不胜感激。
答案 0 :(得分:1)
在这种情况下,您通常使用3个表:
在这里,它意味着:
而且,要拍电影:
select *
from movie
where id = X
要获得该电影中的演员:
select stars.*
from stars
inner join movies_stars on movies_stars.id_star = stars.id
where movies_stars.id_movie = X
如果需要,你甚至可以加入电影表; - )
几个关键字:
答案 1 :(得分:1)
通常,对于“多对多”类型的关系,就像Actors :: Movies一样,你会有一个单独的第三个表,看起来像这样:
autoid | Actor | Movie
----------------------
1 43 47
2 36 22
3 36 28
4 17 47
其中此表的Actor和Movie列中的值对应于列出Actors和Movies的单独表中的行的主键ID。要获取ID为47的电影的所有演员,您需要查询WHERE Movie = 47
;要获得身份为36的演员的所有电影,你可以查询WHERE Actor = 36
等等。
答案 2 :(得分:1)
理想情况下,规范化解决方案是有3个表,如下所示:
TABLE Movie:
MovieID (INT)
Name (VARCHAR)
ReleaseDate (DATE)
TABLE Actor:
ActorID (INT)
Name (VARCHAR)
TABLE Cast:
ActorID (INT)
MovieID (INT)
此外,这些列通常称为“字段”
答案 3 :(得分:0)