首页 > 解决方案 > 数据库设计 - 自定义和预定义属性

问题描述

我正在创建一个APP,类似于OLX。从服务器端我使用 Laravel 的 Lumen。我的问题是我无法弄清楚如何将分配的属性存储到广告。当然我知道有很多方法,但我需要找到最好的方法来使它非常有效。

我有两个想法,它们似乎都很糟糕;)

1.为分配给广告的每个属性创建单独的行,例如:

| id | ad_id | attribute_id | value |
| 1  |  1    |      12      |  new  |
| 2  |  1    |      17      | wooden|
| 3  |  1    |     123      |  114  |

但这似乎会导致将来有数百万个分配的属性出现问题

2.另一方面,创建序列化值不容易搜索,同时尝试按属性过滤广告。

| id | ad_id | attribute_value |
| 1  |  1    |a:3:{i:0;a:1:{i:12;s:3:"new";}i:1;a:1:{i:17;s:6:"wooden";}i:2;a:1:{i:123;s:3:"114";}}|

有任何想法吗?

编辑:
我决定不使用任何多值属性,但我会尽量弄清楚我的其余问题:

在遵循一些建议后,我将所有属性分为 3 组:

1.不可搜索,序列化,直接存储在广告表中-似乎是我只需要显示的值的最佳选择。

2.使用 3 个表格进行预定义的选择:

属性:

id   | name   | slug   | category     | type    | required    | purpose
  1  | Color  | color  | 2            | select  | true        | both

属性值:

id  | attribute_id  | value | slug
1   | 23            | Blue  | blue
2   | 23            | Red   | red
3   | 23            | Green | green

属性关系:

id  | attribute_val_id  | ad_id
1   | 24                | 54

3.第三,用户输入的属性值:

属性:

id   | name   | slug   | category     | type    | required  | purpose
  2  | Size   | size   | 234          | input   | true      | both

自定义属性:

id  | attribute_id  | value | ad_id
1   | 24            | 2052  | 54

这是最好的方法吗?

标签: mysqldatabase-designlumenentity-attribute-value

解决方案


推荐阅读