当前位置: 首页 > 面试题库 >

如何在MySQL中创建具有N:M关系的表?

贡和裕
2023-03-14
问题内容

假设我有两个表:Store和Product。我希望我的商店有产品清单。我怎样才能做到这一点?

create table store(
id int unsigned not null auto_increment,
store_name varchar(30) not null,
product_list_FK int unsigned not null,
primary key(id)
);

create table product(
id int unsigned not null auto_increment,
product_name varchar(30) not null,
price float not null,
primary key(id)
);

我开始这样的事情,但是我不知道该如何完成,你们能帮我吗?


问题答案:

多对一(产品只能有一家商店)

create table store(
    id int unsigned not null auto_increment,
    store_name varchar(30) not null,
    primary key(id)
);

Query OK, 0 rows affected (0.02 sec)

create table product(
    id int unsigned not null auto_increment,
    store_id int unsigned not null,
    product_name varchar(30) not null,
    price float not null,
    primary key(id),
    constraint product_store foreign key (store_id) references store(id)
);

Query OK, 0 rows affected (0.02 sec)

多对多(产品可以在许多商店中使用)

create table store(
    id int unsigned not null auto_increment,
    store_name varchar(30) not null,
    primary key(id)
);

Query OK, 0 rows affected (0.04 sec)

create table product(
    id int unsigned not null auto_increment,
    store_id int unsigned not null,
    product_name varchar(30) not null,
    price float not null,
    primary key(id)
);

Query OK, 0 rows affected (0.01 sec)

create table product_store (
    product_id int unsigned not null,
    store_id int unsigned not null,
    CONSTRAINT product_store_store foreign key (store_id) references store(id),
    CONSTRAINT product_store_product foreign key (product_id) references product(id),
    CONSTRAINT product_store_unique UNIQUE (product_id, store_id)
)

Query OK, 0 rows affected (0.02 sec)


 类似资料:
  • 问题内容: 在课堂上,我们都是“学习”数据库,每个人都在使用Access。厌倦了这一点,我试图做该类其余部分的工作,但是要使用MySQL的原始SQL命令而不是使用Access。 我已经设法创建数据库和表,但是现在如何在两个表之间建立关系? 如果我有两个这样的表: 和 如何在两个表之间创建“关系”?我希望为每个帐户“分配”一个customer_id(以指示谁拥有它)。 问题答案: 如果表是innod

  • 本文向大家介绍Django 创建具有关系的模型,包括了Django 创建具有关系的模型的使用技巧和注意事项,需要的朋友参考一下 示例 多对一关系 最通用的选项。可以在您想要代表任何关系的任何地方使用 多对多关系 在内部,这是通过另一个表表示的。并ManyToManyField应放在将在表单上进行编辑的模型上。例如:Appointment将具有ManyToManyField被叫Customer,Pi

  • 我正试图阻止我的关系重新开始。我尝试了多种方法来解决这个问题,但似乎每次都有一个错误。例如,当我尝试以下代码时: 我得到以下错误: 我已经检查了数据库中的所有表和索引,但在任何地方都找不到此约束。我该如何移除它。我基本上希望我的模式是这样的: 今年将有一份所有学生、老师的名单。当学生注册时,他们将被添加到该学年中 如果我不添加连接列,我只是得到另一个表说 Year.students 我如何将这些结

  • 假设我在前面有一个表单,它有常用的字段和下拉列表。在这些下拉列表中,用户可以选择一个选项,并且每个选项都链接到Spring data JPA中的一个实体; 下拉列表包含一些标签和对应实体的链接作为值。然后,这个值在POST-request中传递给我们希望创建的实体的PagingAndSorting存储库。 假设它是一个具有username的用户,并且他必须与其中一个办公室(也是一个实体)关联: 我

  • 我试图在Enterprise Architect中创建一个带有模型文档和报表规范的报表关系图。令人尴尬的是,我以前做过这件事,但不知道我是怎么做的。我没有做笔记,我可能应该做的,因为这是我每两年做一次的任务。 但我似乎能搞清楚第一步,那就是报表图。 我使用的是版本EA 13.0.1307。

  • 我使用以下命令将数据从csv文件加载到Neo4j中。输入文件很大,有数百万行。当这个查询运行时,我可以查询节点的数量并检查进度。但是一旦它停止创建节点,我想它就会继续创建关系。但我无法检查这一步的进展。 我有两个疑问: 它是否处理每一行文件的命令,即为每一行源码创建节点和关系等?? 或者它一次创建所有节点,然后创建关系。 下面是加载文件的密码器。