2014-01-16 95 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)和从序列

好运手动或自动填写!