正确关联 MySQL-table 内容
Relating MySQL-table content correctly
我在数据库中有以下表格:
- 产品
- assembly_steps
- 零件
- 警告
我想将这些表格的内容关联如下:
一个产品由许多 assembly_steps 组成。 assembly_step 可以有不同的部分和警告。所以我建表
- assembly_steps_has_parts
- assembly_steps_has_warnings
- products_has_assembly_steps
关联数据。 ...has...-tables 通过外键与其相关伙伴连接。我用 MySQL-Workbench.
建模
我对关联信息的机制感到困惑。我如何在 PHP 中编程?
我认为您首先要在最低级别添加内容,即零件和警告。然后添加装配步骤并关联数据。但我不知道该怎么做。
在这里您可以找到概述:Database-Model
您不会在 PHP 中对此进行编程,您会在 mysql 中完全处理它。在 mysql 中的结构方式将是这样的:
assembly_steps
assembly_id
assembly_description (or something like that
assembly_id是主键
parts
part_id
part_name
part_id是主键
assembly_steps_has_parts
assemply_id
part_id
在这个 table 中,您将有一个 双主键 。程序集和零件 ID 都是外键 AND 各自 table 的主键。
双主键的工作方式是两个键在一个[=47=上组成一个主键].这意味着它不是限制为 1 个键,而是将 table 限制为这些键的任何 组合 之一。
例如:
pk1 pk2
1 1
1 2
1 3
2 1
2 2
2 3
您可以像这样查询它们(这是一个通用查询,但基本思想)
select a.assembly_description, p. part_name
from assembly_id a
join assembly_steps_has_parts ats
on a.assembly_id = ats.assembly_id
join parts p
on ats.part_id = p.part_id
你会为其他 table 做同样的事情。从那时起,您只需在 php 中调用您的查询结果,就像您处理任何其他查询的方式一样。
关系数据库将 entities/values 关联起来,将它们一起记录在 table 中的一行中。
要将 assembly_steps 关联到部件,只需在 assembly_steps_has_parts 中插入一行,例如如果您在 $assembly_step_id 中有 assembly_step_id,并且在 $part_id 中有 part_id,那么:
INSERT INTO assembly_steps_has_parts (assembly_steps_id, parts_id)
VALUES ($assembly_step_id, $part_id)
我在数据库中有以下表格:
- 产品
- assembly_steps
- 零件
- 警告
我想将这些表格的内容关联如下: 一个产品由许多 assembly_steps 组成。 assembly_step 可以有不同的部分和警告。所以我建表
- assembly_steps_has_parts
- assembly_steps_has_warnings
- products_has_assembly_steps
关联数据。 ...has...-tables 通过外键与其相关伙伴连接。我用 MySQL-Workbench.
建模我对关联信息的机制感到困惑。我如何在 PHP 中编程?
我认为您首先要在最低级别添加内容,即零件和警告。然后添加装配步骤并关联数据。但我不知道该怎么做。
在这里您可以找到概述:Database-Model
您不会在 PHP 中对此进行编程,您会在 mysql 中完全处理它。在 mysql 中的结构方式将是这样的:
assembly_steps
assembly_id
assembly_description (or something like that
assembly_id是主键
parts
part_id
part_name
part_id是主键
assembly_steps_has_parts
assemply_id
part_id
在这个 table 中,您将有一个 双主键 。程序集和零件 ID 都是外键 AND 各自 table 的主键。
双主键的工作方式是两个键在一个[=47=上组成一个主键].这意味着它不是限制为 1 个键,而是将 table 限制为这些键的任何 组合 之一。
例如:
pk1 pk2
1 1
1 2
1 3
2 1
2 2
2 3
您可以像这样查询它们(这是一个通用查询,但基本思想)
select a.assembly_description, p. part_name
from assembly_id a
join assembly_steps_has_parts ats
on a.assembly_id = ats.assembly_id
join parts p
on ats.part_id = p.part_id
你会为其他 table 做同样的事情。从那时起,您只需在 php 中调用您的查询结果,就像您处理任何其他查询的方式一样。
关系数据库将 entities/values 关联起来,将它们一起记录在 table 中的一行中。
要将 assembly_steps 关联到部件,只需在 assembly_steps_has_parts 中插入一行,例如如果您在 $assembly_step_id 中有 assembly_step_id,并且在 $part_id 中有 part_id,那么:
INSERT INTO assembly_steps_has_parts (assembly_steps_id, parts_id)
VALUES ($assembly_step_id, $part_id)