首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个表中引用多行表

从另一个表中引用多行表
EN

Database Administration用户
提问于 2019-07-26 03:23:59
回答 3查看 2.2K关注 0票数 0

这是一个编程挑战,我承担了学习一些MySQL基础知识的任务,我不知道如何以我需要的方式实现一对多的关系。见以下代码:

代码语言:javascript
复制
CREATE TABLE Product (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    price FLOAT(7,7) NOT NULL,
    needed_for_bundle INT(2) NOT NULL
)

CREATE TABLE Bundle ( 
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    price FLOAT(7,7)
)

我在任何地方都找不到如何做到这一点,或者我只是不理解我发现的相似的例子。如果这些是python对象,我将在bundle表/对象中列出引用包中的3-4项的产品I。我知道这是一对多的关系,但我无法从词汇和理论上理解它如何在MySQL中工作。

我会很感激你的帮助。谢谢你们所有人。

EN

回答 3

Database Administration用户

发布于 2019-07-26 05:03:02

将列"needed_for_bundle“设置为引用表束的主键的外键意味着两个表之间存在一对多的关系。每个产品必须属于一个捆绑,一个捆绑可以由一个或*产品组成(S)。

因此,首先,needed_for_bundle应该与Bundle表的主键( INT(6) )类型相同。

更改后,可以应用此代码,用于外键约束+索引:

代码语言:javascript
复制
ALTER TABLE `Product` 
ADD FOREIGN KEY (`needed_for_bundle`) 
    REFERENCES `Bundle` (`id`) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE;
CREATE INDEX `fk-id_bundle-Product-Bundle` 
    ON `Product` (`needed_for_bundle`) USING BTREE;
票数 1
EN

Database Administration用户

发布于 2019-07-26 11:47:07

只有一捆和四种产品..。从bundle表中引用包中的产品。

免责声明。下面描述的解决方案是糟糕的实践。但如果一个人想自杀,我有谁能阻止他?

如果您想要创建“反向一对多的关系”,并从“一个”侧引用到“多个”方,则可以使用引用字段模拟该关系,其中所有N端记录标识符都存储在某种实体格式中。

这种坚实的格式可以是:

  • CSV存储在一个字符串类型的字段(long varchar或text/blob)中,由某些字符分隔(缺省为逗号,但您可以使用另一些字符)。如有需要,可储存订单。
  • JSON - in存储在JSON数组或对象中。如果要使用对象,则需要生成一些键值(例如,可以是标识值),并使用键值存储订单。在数组中,顺序无法存储,并且在将数据保存到记录的字段中时会丢失。
  • 另一些(二进制编码并将BLOB存储为字节流、XML等)。

每次当您需要设置关系时,都需要将这个实值解析为单独的ID值。代码将是昂贵和丑陋的。

RDBMS不会检查您的数据一致性。您可以使用触发器/约束来模拟它,但是(见前一句)。

票数 0
EN

Database Administration用户

发布于 2019-07-26 15:40:36

needed_for_bundle是产品表中的外键,它将通过id字段与Bundle表相关联。此外,needed_for_bundle必须与Bundle表中的id字段相同的数据类型。在Products表中,您将needed_for_bundle定义为INT(2),隐式定义为签名,而非绑定表,定义id为INT(6)无符号。

存储4个产品,您应该开发一个触发器或存储过程,这将有助于控制要存储的项目编号。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/243844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档