【问题标题】:new to sql/mysql cant figure out foriegn keys新的 sql/mysql 无法找出外键
【发布时间】:2015-03-23 21:43:22
【问题描述】:
CREATE DATABASE FINAL_PROJECT;

USE FINAL_PROJECT;

CREATE TABLE MOVIE_RATING
(RATING_ID VARCHAR (1) PRIMARY KEY,
RATING VARCHAR(4));

CREATE TABLE MOVIE
(MOVIE_ID VARCHAR (2) PRIMARY KEY,
TITLE VARCHAR(20),
YEAR_RELEASED VARCHAR(4),
RATING_ID VARCHAR(1),
BW VARCHAR(4),
SUBTITLES VARCHAR(5));

CREATE TABLE CAST
(CAST_ID VARCHAR (2) PRIMARY KEY,
LAST_NAME VARCHAR(20),
FIRST_NAME VARCHAR(4),
DOB VARCHAR(20),
DOD VARCHAR(20));

CREATE TABLE MOVIE_CAST
(MOVIE_ID VARCHAR (2), 
CAST_ID VARCHAR(2),
PERSONA VARCHAR(4));

我需要为此处的表编写外键,目前不知道如何处理以下内容:

  1. movie 表中,我需要引用rating id,即 出现在rating 表中。
  2. cast 表中我需要引用movie id 和cast id 来自movie 表和cast

【问题讨论】:

  • 哇!教授告诉人们去堆栈溢出来得到答案?教科书和助教呢?也许你应该向 SO 支付大学费用。
  • Here's the FK Section for MySql。教授好心地将候选外键的名称与原始表中的相关主键保持一致,因此应该很容易发现它们。切勿将日期存储为 varchar - 为此使用相关的 Date 类型。 Year_Released 也是整数字段的候选者。
  • 这里有一个快速教程。不是最好的学习场所,但现在还可以。 w3schools.com/sql/sql_foreignkey.asp

标签: mysql sql-server database-design


【解决方案1】:

此命令将创建一个外键:

alter table movie 
  add foreign key (rating_id)
  references rating(id);

我建议将cast 表重命名为其他名称,因为cast 是一个内置函数。也许movie_cast

【讨论】:

  • 当我使用 alter table 代码时,我收到一条错误消息,提示 SQL Error (1064): You have an error in your SQL syntax。检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 'ALTER TABLE MOVIE ADD foreign key (rating_id) references */ CREATE TABLE MOVIE (MOVIE_ID VARCHAR (2) PRIMARY KEY, TITLE VARCHAR(20), YEAR_RELEASED DATE , RATING_ID VARCHAR(1), BW VARCHAR(4), SUBTITLES VARCHAR(5), ALTER TABLE MOVIE ADD 外键 (rating_id) 引用 rating(id);
  • @mic 创建表。然后将 alter 命令作为单独的命令运行。您似乎正在尝试将 alter 命令作为他创建语句的一部分运行。您可以在定义表时定义 FK,但使用不同的语法并且您的问题已经定义了表。
  • 我将如何编写查询来定义 fk
  • @mic 命令应该可以工作。您在评论中发布的错误消息显示您已尝试将更改与创建混合。只需将 alter 作为单独的语句运行即可。
猜你喜欢
  • 2012-08-08
  • 2015-05-27
  • 2014-01-05
  • 2013-02-26
  • 2015-04-16
  • 2013-10-05
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多