【问题标题】:Creating a new many-to-many table创建一个新的多对多表
【发布时间】:2010-09-09 01:54:41
【问题描述】:

我有一个数据库 Class_Books,它将 ISBN(来自 Books 表)链接到 Class_ID(来自 Classes 表)。我正在更改我的 Books 表,因此主键是 Book_ID(自动增量 INT)而不是 ISBN。有没有办法更新 Class_Books 使其现在使用 Book_ID?

【问题讨论】:

    标签: sql mysql many-to-many


    【解决方案1】:

    MySQL 支持多表 UPDATE 语法,这使得这种类型的工作更容易。

    ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable
    
    UPDATE Books b JOIN Class_Books cb ON b.ISBN = cb.ISBN
    SET cb.Book_Id = b.Book_Id;
    

    然后您可以使用 ALTER TABLE 更改约束条件,使 cb.Book_Id NOT NULL,并删除 cb.ISBN。

    PS:我建议将 Class_Books 称为 many-to-many 表或 intersection 表。 relation这个词在关系理论中的意思是不一样的,和表之间的关系没有关系。

    【讨论】:

    • 这和 association 表是一样的吗?还是我在想别的?
    • @mlschechter:听起来像是我的同义词
    • 当然,只是不要将其称为关系表,因为这就像说您使用的是数字整数。在某种程度上是正确的,但听起来很尴尬和多余。
    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多