【问题标题】:How to set up parent and child tables (per category properties) in MySQL?如何在 MySQL 中设置父子表(按类别属性)?
【发布时间】:2010-02-05 10:14:36
【问题描述】:

我有一个分类广告网站。用户可以放分类,每个分类都有子选项。

示例:用户选择“汽车”,必须填写颜色、里程、燃料、变速箱等选项。

这是我的表格:

Category table:
cat_id (PK)
cat_name // "Cars" for example

Category Options table:
option_id (PK)
cat_id (FK)
option_name // "Color" for example

Option Values table:
value_id (PK)
option_id (FK)
value // "red" for example

我的问题是,在最后一个表(选项值)中,不应该也有“其他东西”吗,因为我如何增加这个表或引用这个表来分类?

例如,让我们看看这些表中的两条记录。首先是类别表:

  Cat_id         Cat_name
     1            cars
     2            trucks

然后是类别选项表:

 option_id        Cat_id(FK)       option_name
     1              1                color
     2              1                mileage

然后是选项值表,问题就出在这里,我不知道该怎么做:

  Value_id       option_id(FK)    value
     1               1            red
     2               2          11000 miles

如果我决定在另一辆车上插入另一个广告,会发生什么?最后一个表中不应该有另一个引用吗?

我还有其他表格,例如“分类”,其中包含标题、文本、价格等。

【问题讨论】:

    标签: sql database


    【解决方案1】:

    你自己已经给出了答案。

    不应该有其他参考吗 在最后一张桌子上?

    我还有其他表格,例如 包含标题的“分类”, 文字、价格等...

    把表的IDclassified作为另外一个key放在table options中,这样就得到了

    Option Values table:
    value_id (PK)
    option_id (FK)
    classified_id (FK)
    value // "red" for example
    

    然后您可以获取指定分类的所有选项的所有值:

    SELECT c.option_name, o.value
    FROM option_Values o
    LEFT JOIN category_options c ON (o.option_id=c.option_id)
    WHERE o.classified_id = 15; -- as an example
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多