+ -
当前位置:首页 → 问答吧 → 请教一个数据库的模型设计问题(有关“联系”)

请教一个数据库的模型设计问题(有关“联系”)

时间:2011-11-20

来源:互联网

有一个数据库,现有两张表。
一张表是Star,有2列
StarID,演员的ID号
name,演员的姓名
另一张表是Movie,有2列
MovieID,影片的ID号
name,影片的名称
一个演员可能会出演过n多部电影,比如说刘德华,但是很多没名气的演员大概只能在一两部片中当主演。
片也是这样,一部片有可能是n多的明星参加演出,比如说建国大业,但是大多数片大概只有几个知名演员参加演出。

现在的要求是,设计数据库,使得给出演员的姓名,能查到TA演出过哪些片;给出片名,能查到这部片中哪些明星参加了演出。


要完成设计,目前我想出来的办法是再建立一张表,有2列,一列是StarID,另一列是MovieID。不过我觉得这样做很不方便。例如我现在要记录柳岩演出过《画壁》,我还要先查一下柳岩的ID,再查一下《画壁》的ID,最后到新建的表中输入这2个ID。
并且,我认为这样设计,还会造成很多重复的数据。假设建国大业有100个知名演员参加演出,那么就需要100条记录,200个数据项。


有木有更好的解决方案?

作者: liyongf   发布时间: 2011-11-20

演员的ID和电影的ID对应不就行了。。。。

作者: linyu13179   发布时间: 2011-11-20

Movie表里加演员字段就可以了,对个演员用逗号隔开,查询用模糊查询

作者: ssp2009   发布时间: 2011-11-20

引用楼主 liyongf 的回复:
有一个数据库,现有两张表。
一张表是Star,有2列
StarID,演员的ID号
name,演员的姓名
另一张表是Movie,有2列
MovieID,影片的ID号
name,影片的名称
一个演员可能会出演过n多部电影,比如说刘德华,但是很多没名气的演员大概只能在一两部片中当主演。
片也是这样,一部片有可能是n多的明星参加演出,比如说建国大业,但是大多数片大概只有几个知名演员参加演出……


你这样的设计(新建一个纽带表),是最标准的解决方案.

作者: qianjin036a   发布时间: 2011-11-20

你再仔细想想,建一个新表,一列是StarID,另一列是MovieID,它里面怎么会有重复的数据呢?
一个建国大业,100个知名演员参加演出,那么就需要100条记录,其中有重复的吗?

作者: qianjin036a   发布时间: 2011-11-20

可以建立一个关联表。关联演员和电影表

作者: fredrickhu   发布时间: 2011-11-20

引用 4 楼 qianjin036a 的回复:
你再仔细想想,建一个新表,一列是StarID,另一列是MovieID,它里面怎么会有重复的数据呢?
一个建国大业,100个知名演员参加演出,那么就需要100条记录,其中有重复的吗?

建国大业的MovieID不是重复了100次吗?

作者: liyongf   发布时间: 2011-11-20

引用 6 楼 liyongf 的回复:
引用 4 楼 qianjin036a 的回复:
你再仔细想想,建一个新表,一列是StarID,另一列是MovieID,它里面怎么会有重复的数据呢?
一个建国大业,100个知名演员参加演出,那么就需要100条记录,其中有重复的吗?

建国大业的MovieID不是重复了100次吗?


这不就是最典型的 一对多 吗!

作者: qianjin036a   发布时间: 2011-11-20