我有涉及具有以下结构的建立第三表(Repair_Parts表)一个问题:设置一个字段中的表,用于存储与两个外键数据,和编号
部分表
PART_ID(INT,无符号,自动增量) - 主键
Part_name(VARCHAR(50)) - 独特
Part_d escrip(TEXT)
修复表
Repair_id(INT,无符号,自动增量) - 主键
Repair_name(VARCHAR(50)) - 独特
Repair_descrip(TEXT)
Repair_Parts表
Repair_id(外键 - 涉及到修表的Repair_id场)
PART_ID(外键 - 涉及到部分表的PART_ID场)
Repair_Part_Item# - 编号基于与特定Repair_id PART_ID领域的条目数(用于存储关于与修复相关的部分的数据) - 我希望此字段为每个不同的repair_id以“1”开始编号。
问题
例如,可以说一个PHP程序允许用户创建如何做一个汽车修理方向。用户表示修复为“检查电池”(将电池插入Repair_name字段(VARCHAR(50))下的Repair表中)以及修复的简短说明(该修复将数据插入Repair_descrip字段下的Repair表中用户也可以指定“检查电池”修理中涉及的特定部件,可能是一个或多个,但在这种情况下,它只有两个不同的部件,即“交流发电机”和“电池”。在不同的条目中,用户指定三个部分进行不同的修复。
如何在phpMyAdmin或MySQL中创建此Repair_Parts表,以便数据库跟踪修复所需的特定部件?使用?MyISAM或INNODB?
从我读过的有关数据库规范化的内容看来,我似乎有正确的方式来构建我的表,但我无法弄清楚如何使Repair_Part_Item#字段以我想要的方式存储数据。具体来说,假设我已经以可接受的方式打破了我的表和它们的字段,那么我将如何获得Repair_Part_Item#字段,以针对每个不同的Repair_id字段条目开始编号为1,并为具有相同Repair_id的每行计数不同的Part_id(并且不允许具有相同的Repair_id和Part_id的重复行)?
从我已阅读的规范化这似乎是正确的方式来构建我的表,但我无法弄清楚如何使Repair_Part_Item#字段正常工作。
我是一个MySQL和PHP的相对新手,我只是试图在进入PHP方程之前设置数据库。
感谢您的回复。所以repair_id和part_id字段将是什么类型? INT? VARCHAR?或者它甚至重要?对不起,如果这应该是显而易见的。我是新来的。 – 2011-12-23 15:21:14
FK总是被绑定为它们指向的类型。因此,如果您的'part_id'指向'parts.id',它必须与'parts.id'具有相同的类型和显示长度。为了简短起见,请使用表格的整数。 – 2011-12-23 15:29:08
触发器名称是您选择的任何内容。请记住,我最有可能在我的SQL语法中有错误,我只是将它作为参考发布,以便您可以看到如何创建一个这样的触发器。这个想法是,你根据'Repair_id'值增加'Repair_Part_Item'号码。如果'Repair_Part_Item'为NULL(或零,我不知道你为列的默认值指定了什么),那么它是序列的第一个成员(数字1)。这就是逻辑 - 实施可能会关闭,因为我没有测试,如果我真的写了触发器:) – 2011-12-23 16:02:28