与项目和属性的联系.. 1列或多列?

时间:2014-07-30 14:31:18

标签: mysql sql database-design

我正在设置数据库并需要一些输入。 我有一个联系人列表,每个项目可以有3-50个项目,每个项目有一些属性。是否更快,更容易编程并更容易维护:

  1. 有一个表格包含联系人和许多列& 属性列。
  2. 有一个包含联系人的表格和包含项目属性的序列化文本。
  3. 拥有联系人的表格以及包含项目属性的表格。
  4. 包含联系人的表格,包含项目的表格和包含属性的表格。
  5. ?????
  6. 我是这个(或任何)Db设计级别的菜鸟,所以请像对待我一样对待我5.;)

    工具:mysql,workbench 6.1,PHP,一些jQuery和javaScript

    截至目前我的解决方案:#4 - >>

    • 表:联系人 :( k)的ID,名称,用户名,密码等---
    • 表格:项目 :( fk)contactsId,(k)id uniqueItem_1,uniqueItem_2 ,,,, uniqueItem_24
    • 表:的 ItemAttributes中 :( k)的ID(FK)itemsId,(FK)uniqueItemId,attribute_1,attribute_2
    • 表:的属性 :( k)的ID,(FK)itemAttributeId,属性

1 个答案:

答案 0 :(得分:0)

可能是这样的。如果属性值可能因contact-item而异,则可能还需要一个表。

Contacts
id, name, etc...

Items
id, name, ...

ItemAttributes
id, item_id, attribute_name, value, etc...

ContactItems
contact_id, item_id

此外,如果项目数量很少,固定数量,最好只为每种类型的项目创建一个单独的表格,并为属性设置列,而不是为项目属性设置单独的表格。