mysql - 数据库设计方法:需要的建议
问题描述
我正在设计培训视频市场应用程序。将有付费和无偿客户。对于未付费客户,我想提供一些视频作为所选培训包的免费访问权限。
例如,如果给定的培训包中共有 10 个培训视频,则 4 个视频将是免费的。但是,要观看剩余的 6 个视频,客户需要购买整个培训包。
我无法决定为这种情况设计数据库表的正确方法。
这是我能想到的。我不确定这将是正确的方法。
第一种方法: 我假设,我需要如下三个表:
- 客户表(列:customer_id、客户信息)
- 训练视频表(列:video_id、视频 url、free_access 为布尔值)
- 采购表(列:Customer_id为外键,video_id为外键)
当用户访问任何培训视频时,我会检查用户是否付费。为此,我将借助 Purchase_table。然后根据 boolean free_access 列,视频将被提供/拒绝。但是,这在性能方面似乎太昂贵了(我可能错了!)。
第二种方法: 我应该在付费和非付费用户的培训视频表顶部创建视图,以尽量减少非付费用户对视频的访问。但是,我不确定这将如何实施。
我是否应该使用一些缓存机制来避免为每个视频请求查询购买表。您是否认为可以或可以建议任何新方法。
任何帮助将不胜感激!
谢谢
解决方案
推荐阅读
- javascript - 带有 jest 的 vue-test-utils 为 map-spread 运算符抛出了意外的令牌错误
- android - 以编程方式检索 Android 中的文件大小
- java - Spring Security 无法识别哪个登录用户
- php - 如何从php文件中的字符串中删除方括号?
- javascript - 如何向对象添加元素键和值?
- python - 将对象转换为 datetime64[ns]
- umbraco - Umbraco Parse 错误与 Google AMP 样式样板播放
- python - 使用 `pip install -e .` 通过 `console_scripts` 安装的 Python 可执行脚本可以在路径中找到,但不能在 `pip install ` 中找到。
- azure - 有没有办法在发布管理中使用相同的应用服务部署多个项目?
- angular - Angular - 需要在导出类的内部/外部定义哪些变量?