-1
我有狗,猫,马包含有关他们的信息行表的表,我想创建一个表照片可以创建每个照片的信息,所以想建立一对多的关系b/w名称属性与表格照片。我在每个表中使用名称属性,它被设置为唯一的,但不是主要的,我想要一种方式来加入他们,以便每个名字,如果有照片表中有多个条目,他们可以显示。创建表之间的关系
我有狗,猫,马包含有关他们的信息行表的表,我想创建一个表照片可以创建每个照片的信息,所以想建立一对多的关系b/w名称属性与表格照片。我在每个表中使用名称属性,它被设置为唯一的,但不是主要的,我想要一种方式来加入他们,以便每个名字,如果有照片表中有多个条目,他们可以显示。创建表之间的关系
我强烈建议您使用int主键而不是名称来链接表。
如果您需要更改任何动物的名称,链接将有效打破。
简单的例子:
CREATE TABLE `animals` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`species` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `images` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`animal_id` int(10) NOT NULL,
`image_url` varchar(1024) DEFAULT NULL,
PRIMARY KEY (`id`)
);
您也可以做得很好,创造的物种第三个表,使一个链接,而不是文本字段。
这个想法是易于管理和面向未来的。
查询来获取数据特定动物及其所有图像会是这样的:
SELECT a.name, a.species, i.image_url
FROM animals a
LEFT JOIN images i ON (i.animal_id = a.id)
WHERE a.id = 123;
name species image_url
----- ----- -----
Fido dog images/fido1.jpg
Fido dog images/fido2.jpg
其他查询是可能的,但这种方案可以让你有动物具有相同的名称和他们赢得了”没有冲突。
非常感谢您提供这样的描述性答案 – ashish
但我不希望使用INT ID bcoz这很难记住,而是我想与名称字段的帮助一起工作,因为这很容易记住,我认为它还可以帮助制作排序a,b,c的索引,例如用于浏览名称为a,b等的狗的字母。 – ashish
您不必记住任何ID,就可以使用数据库为您检索。所以如果你想得到“Fido的”信息,你可以查询他的ID:SELECT id FROM animals WHERE name ='Fido'' - 显然如果你有多个Fido,你需要更多的信息来限制记录被返回。要按名称的字母顺序列出所有狗的名单,你可以做'选择姓名从动物'种类='狗'命令名称ASC;'。相信我使用int作为主键。 – JYelton