-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