Mysql表之间相互链接

标签 mysql sql

我将在mysql中创建3个表:

Movies: id-name-country
Tv-Series: id-name-country
Artists: id-name-country

我计划创建另一个表,而不是单独将国家/地区信息输入到这些表中:

Countries: id-country

我将使前三个表从国家表中获取国家/地区数据。 (这样,如果某个国家的名称拼写错误,只需在一处进行更正即可轻松完成。其他表中的数据将自动更新。

  • 我可以使用“外键”来执行此操作吗?
  • 这是正确的方法吗?

最佳答案

到目前为止,您的方法是正确的,仅当电视连续剧和艺术家中的“国家/地区”您指的是国家/地区 ID 而不是值。是的,您可以使用外键(电视剧和艺术家中的国家/地区 ID 是链接到国家/地区的外键);

编辑: 旁注:查看您的编辑,我觉得有必要指出,如果您计划将电影/电视节目与艺术家链接,您需要第四个表来保持到目前为止的标准化。

编辑2: 决定是否需要表的通常方法是检查 2 个表或值具有何种类型的连接。

  1. 如果是一对多(如艺术家与原籍国),那就没问题。
  2. 如果您有多对多,例如电影与艺术家,其中 1 位艺术家可以出现在多部电影中,而 1 部电影可以有多个艺术家,则您需要一个链接表。
  3. 如果您有 1 对 1 的关系(例如银行系统中的 customer_ID 和护照详细信息,它们可以单独存储在客户和护照表中,但加入它们更有意义,因为银行仅保存 1 份有效护照的详细信息每个客户和 1 本护照只能由 1 人使用)您可以合并表格(存在不满足规范化 3 标准的风险)

关于Mysql表之间相互链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26320440/

相关文章:

mysql - 如何处理 mySQL 中 future 孤立记录的删除

php - 复杂(或非常非常简单)的 MySQL 查询?

php - 在 PHP 中发生下一次迭代之前引用它

sql函数检查两个人是否有共同的祖先

mysql - 来自触发器 MySQL 的结果集

php - 搜索 MySQL 数据库,其中字段包含符号

mysql - 优化子查询选择每组最后一条记录

SQL Server 2005 IndexOptimize SP 针对一个表的索引

SQL如何按时间段分组

python - pyspark.sql.function可以在udf中使用吗?