mysql - 数据库设计 - 自定义和预定义属性
问题描述
我正在创建一个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
这是最好的方法吗?
解决方案
推荐阅读
- html - Html 和 css 背景颜色
- java - 无法在 MacOS Catalina 下安装经过公证的 Java 应用程序
- arrays - 如何从 JSON 哈希构造关联 Bash 数组?
- typescript - 如何告诉 VSCode/TypeScript window.Service 存在?
- javascript - 使用钩子响应状态更新
- reactjs - 如何抑制有效 useEffect 实例的 linting?
- google-identity - Google 身份平台,无法启用
- python - 将 MM-DD 添加到 Python 年份
- flutter - 如何获取音频文件的长度而不在 Flutter/Dart 中播放
- php - phpseclib 1.0 是否与 PHP 7.3 兼容?