sql - SQL 许多具有相同列的表 - 导出到单独的表并在每个查询中加入?
问题描述
我正在设计一个相当大的应用程序,通常可能有大约 50-100 个表。
我发现几乎每个表都可以使用“已删除”、“时间戳”、“用户 ID”、“工作区”列。
现在摆脱所有这些列并简单地创建 3 个表,这些表的名称链接到所有其他 50-100 个表的 row_id 和 table_id 不是更好的做法吗?然后在每个查询中我只是加入这些表?
这肯定是数据库设计中很常见的一个问题,但是我没有通过谷歌和其他资源找到任何东西。
常见的方法是什么?当然,将逻辑导出到外部表似乎更像是一种规范化的方法,但是如果每个查询都有这么多的 JOINS,性能可能会受到影响(由于现有的数据结构非常复杂,因此已经有大量的连接等。 )。
解决方案
这实际上取决于您打算如何处理数据。
您是否计划仅使用这些列中的数据(已删除标志、所有时间戳标志等)进行大量查询,而不查看给定行中包含的其他数据?
如果您将要执行的大多数查询都不想加入,那么这是存储数据的更好方法,并且可以制作索引来为您提供更多的外部数据价值。
但是,如果大多数时候您在使用表格行中的数据的同时需要这些数据,那么它应该是表格的一部分。
例如,在连接表中包含已删除标志对我来说没有意义——您希望能够过滤列以了解是否应将某些内容视为已删除。
另一方面,审计信息(创建日期、修改日期、删除日期、删除者、上次访问等)似乎都是可以存储在另一个表中的数据类型。通常,您只想查看审计信息本身,而不关心具体的行。
推荐阅读
- r - 每 24 小时在 Shiny 应用程序中下载 CSV 并显示下载时间
- python - 试图从定义中的用户输入中总结总成本
- pyarmor - 皮尔莫尔
- reactjs - 在特定 div 中显示 react-bootstrap 模式
- php - 抓取页面时出错,Cloud Flare 保护,cookie
- javascript - 一个基本的 JavaScript 字符串比较问题
- substrate - 基材 - 最终确定为零
- javascript - 实现自动完成下拉菜单不起作用
- kodi - 有没有办法找到我的 Kodi 安装使用的 python 版本?
- javascript - 如何在 Fluent UI 中正确使用 Modal