有人可以发布100%实用和虚拟证明指南来创建和MySQL的多种基本用法关系,我很确定很多人会从中受益。
我所拥有的是一个包含多个项目的表格,例如I1,I2,I3 ......
我有另一张表,有许多属性,比如P1,P2,P3 ......
对于每个项目,每个属性可能包含false或true,例如
I1具有属性P2和P3 I2具有属性P1,P2和P3 I3具有属性P1 ...
那么如何创建关系呢? (如果可能请提供代码)
一旦创建,如何
提前致谢
答案 0 :(得分:1)
第1步 - 设置表:
你应该有一个如下所示的表结构(*是主键):
Item
---------
ItemId*
ItemName
ItemProperties
--------------
ItemId
PropertyId
Properties
----------
PropertyId*
PropertyName
第2步 - 设置外键关系:
ItemProperties表中的两列都是其对应表的外键(ItemId到Item表,PropertyId到Properties表)
第3步 - 代码:
要将属性与PropertyIds 35和44关联到ID为111的项目,您将运行以下命令:
INSERT INTO ItemProperties (ItemId,PropertyId) VALUES (111,35)
INSERT INTO ItemProperties (ItemId,PropertyId) VALUES (111,44)
要选择与项目关联的所有属性,请运行以下命令:
SELECT ip.PropertyId, ip.PropertyName
FROM Item as i
INNER JOIN ItemProperties as ip ON i.ItemId = ip.ItemId
WHERE i.ItemId = 111
答案 1 :(得分:0)
在两者之间创建一个中间表,其中包含来自其他表的ID。这样,此表中可以有多个引用(行)将不同的项连接到多个不同的属性。这有意义吗?
答案 2 :(得分:0)
我要做的是创建一个名为ItemProperties
的表,其中包含ItemId
,PropertyId
和PropertyValue
列。
键(ItemId, PropertyId)
对于此表是唯一的。
答案 3 :(得分:0)
这会将产品链接到属性,允许多个具有相同名称的项目。
CREATE TABLE products (
productid int(11) NOT NULL AUTO_INCREMENT,
productname varchar(20) NOT NULL,
description text NOT NULL,
PRIMARY KEY (productid),
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE products_property (
relationid int(11) NOT NULL AUTO_INCREMENT,
productid int(11) NOT NULL,
propertyname int(11) NOT NULL,
PRIMARY KEY (relationid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE properties (
property varchar(30) NOT NULL,
value enum('true','false') NOT NULL,
PRIMARY KEY (property)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;