Sql 在RDBMS中存储稍微不同类型的记录
我知道SQL,但我对它没有太多的经验。我有一个系统,我想在一个索引数据库中记录用户登录、注销和其他与安全相关的事件,以便能够对其进行手动查询,我认为一些基于SQL的RDBMS应该最适合这项工作 但是,我想存储的记录具有相似但不完全相同的数据。所有记录都将存储时间戳和用户名,但其他数据项将有所不同。例如:Sql 在RDBMS中存储稍微不同类型的记录,sql,database-design,relational-database,data-modeling,Sql,Database Design,Relational Database,Data Modeling,我知道SQL,但我对它没有太多的经验。我有一个系统,我想在一个索引数据库中记录用户登录、注销和其他与安全相关的事件,以便能够对其进行手动查询,我认为一些基于SQL的RDBMS应该最适合这项工作 但是,我想存储的记录具有相似但不完全相同的数据。所有记录都将存储时间戳和用户名,但其他数据项将有所不同。例如: 登录事件将存储用户登录时使用的IP地址以及所创建会话的ID 注销事件将存储会话ID而不是IP地址(因为我在注销时没有访问IP地址的权限) 电子邮件更改事件将存储用户以前的和新的电子邮件地址
- 登录事件将存储用户登录时使用的IP地址以及所创建会话的ID
- 注销事件将存储会话ID而不是IP地址(因为我在注销时没有访问IP地址的权限)
- 电子邮件更改事件将存储用户以前的和新的电子邮件地址
- 对每种数据项使用不同的表
- 为所有不同的数据项添加列,并将不使用它们的记录保留为
NULL
- 使用一个包含公共数据项的中心表,以及存储其余数据的辅助表,链接到中心表中的事件ID
显然,每一种都有自己的优点和缺点。我确实意识到这是一个有点主观的问题,也可能取决于实际的用例,但我认为应该有标准/最佳实践来解决我没有见过的这类问题。我的建议是否合理或标准?还有其他更好的选择吗?您提到的解决方案出现在Martin Fowler的书中。你可能想读那本书,看看他对使用这些模式的看法 对每种数据项使用不同的表