2014-01-16 94 views
1

我正在開發一個包含名爲'tbl_items'的表的在線商店應用程序。每個項目的主鍵是'item_id'字段。表結構(缺少主鍵)

現在,我想爲商店上發佈的每個商品添加一個選項,以與描述該商品的多張圖片(每個商品的圖片數量無限)相關聯,因此我創建了另一個名爲「tbl_item_pictures」的表格,其中包含兩列 - 'item_id'和圖片的URL(大小爲2083的varchar)。

我相信這種結構是不是最好的,它可能是由於它已經晚了我住的地方,我只是想不出什麼更好的解決方案的事實,但我有點失去。我真的不想離開沒有主鍵的表,也不想將主鍵分配給我的兩個字段。

什麼,我可以在我目前的結構中添加/更改,使這項工作任何想法?

+0

可能會避免一些頭痛的一個方面說明。如果你已經知道它是一個表格,那麼你可能不需要把'tbl_'放在它的前面。取決於您的DBMS _可以是通配符,這可能會導致通過sys.tables搜索後出現問題(很少我知道,但它可能是一個問題)。我通常只是用大寫字母來擋住桌子。例子,而不是'tbl_item_pictures'你可以做'ItemPictures' – Zane

+0

的確是正確的,這只是我很久以前習慣的工作方法。儘管如此,從來沒有遇到過這種操作方式的問題。 –

回答

3

這是一個非常普遍的設計模式,並把兩列到PK是正常的解決方案。如果你不要做到這一點,你可能會有一個項目到相同圖片的多個鏈接。

沒有什麼錯把兩列到PK這一點。

更新:

回顧一下....

1 - 把你的照片到自己的表,用ID列和url

2 - 在您的鏈接表中,使用tbl_itemIDpictureID,並使它們都成爲查找表的PK的一部分。

+0

問題是最大密鑰長度是767字節,我無法處理。 –

+0

@TommyNaidich看到更新,我沒有意識到你最初在這裏有一個網址。 – JNK

+0

@TommyNaidich請勿使用網址。如果你需要這樣做,用'pictureID'和'url'列創建一個'pictures'表,然後鏈接到那個。 – JNK

0

我會做在圖片表中的ITEM_ID外鍵。如果沒有主鍵,這很好,除非你想添加一個額外的自動編號列來區分。

但是,說你這是很好。每張圖片都有它所附的個別item_id。

認爲它是一個簡單的查找表。

1

您有3種可能性:

1.)沒有主鍵。 atm你似乎不需要一個。

2.)如item_idurl是獨特一起同時使用作爲主鍵

3.)添加第三列(如picture_id)和從序列

好運手動或自動填寫!