Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库及;共享主键?_Mysql_Database_Web_Database Design - Fatal编程技术网

Mysql 数据库及;共享主键?

Mysql 数据库及;共享主键?,mysql,database,web,database-design,Mysql,Database,Web,Database Design,好的,我正在为我正在制作的网站设计一个数据库,它将承载关于不同事物的信息(有点像IMDb) 我会有“电影”页面、“电视”页面和“演员”、“导演”页面,可能还有作家 现在,我最初提出了这样一个想法: 电影{ MediaID:#一种媒体类型(电影/电视)将有一个ID 描述:#一部电影将有一个描述 Cert.UK: Cert.US:#一部电影可以为每个国家颁发证书 IMDb:#一部电影将有一个IMDb评级 持续时间:#一部电影将有一个持续时间 发行:#一部电影将在发行时发行 类型:#一部电影可能属于多

好的,我正在为我正在制作的网站设计一个数据库,它将承载关于不同事物的信息(有点像IMDb)

我会有“电影”页面、“电视”页面和“演员”、“导演”页面,可能还有作家

现在,我最初提出了这样一个想法:
电影{
MediaID:#一种媒体类型(电影/电视)将有一个ID
描述:#一部电影将有一个描述
Cert.UK:
Cert.US:#一部电影可以为每个国家颁发证书
IMDb:#一部电影将有一个IMDb评级
持续时间:#一部电影将有一个持续时间
发行:#一部电影将在发行时发行
类型:#一部电影可能属于多种类型
People.ActorID#一部电影可能有多个演员
People.DirectorID#一部电影可能有多个导演
图像:#一部电影将有一个图像
预告片:#一部电影将有一部预告片
}

证书{
英国:
美国:
}

人民{
PeopleID:#一个人将拥有一个ID
角色:#一个人可以扮演多个角色
Film.MediaID:#一个人可能属于多部电影
姓名:#一个人将有一个姓名
DOB:#一个人将有一个出生日期
描述:一个人将有一个描述
}

对于电影中的MediaID案例;Film和Tv表都将共享MediaID作为主键,我不想创建一个Media表并添加Type:Film/Tv,因为它们需要不同的列,留下大量不必要的空数据。这样可以吗

此外: 添加新影片时,如何确保其MediaID不存在?

当存在一对多关系时,我是否需要创建新表?例如,我曾考虑创建一个角色和类型表,但这是否有必要?

如果您有电影和电视共享ID,那么是的,通常将键分离到单独的表中,让DB在插入时自动分配值,将该键用作其他表中的外键。您的问题可能在此处有答案:如果您有电影和电视共享ID,则可以将该键分离到单独的表中,让DB在插入时自动分配值,将该键用作其他表中的外键。您的问题可能在此处有答案: