您始终在杀手级应用中使用的数据库表/字段

时间:2008-10-29 10:56:45

标签: database-design web-applications

我希望在这里获得一些集体经验,所以您在数据库设计中总是包含哪些(如果有的话)实用程序表或公共字段?

一个例子是我总是包含一个App_Errors表来存储任何未捕获的异常信息,以及一个存储所有编辑信息的App_Audit表。

我(在我看来)提出了在每个数据表中包含RecordCreatedDateRecordLastEditedDate的好处,但没有得出关于信息是否真的有用的任何结论

为问题提供更多方向 - 我目前关注的是全球可访问的Web应用程序(想想社交网络)。

的Ta!

9 个答案:

答案 0 :(得分:9)

1包含版本号的表,因此应用程序可以轻松检查架构的版本。

2一个表,用于保存任意变量/值对,如配置文件,但在数据库中。 (你可以把版本号放在这里......)

答案 1 :(得分:6)

我经常使用审核日志表来跟踪哪些数据已被更改以及由谁更改。

你会惊讶于它有多大程度上有很大的好处。

我工作的几乎所有数据模型中出现的其他内容都是状态表的变体,通常与主要实体的状态生命周期有关。

答案 2 :(得分:2)

每个表,无论它做什么,总是以“ID”字段int。

开头

我还保存了一个Errors表,其中包括ID,日期时间,失败的方法和重载,以及堆栈跟踪(如果可用)。

有时候我有一个设置/统计表,但并非总是如此。

答案 3 :(得分:1)

用于报告,数字表(0到1Mil的整数)和静态日期表(30天的数值)。

答案 4 :(得分:0)

包含错误代码,技术消息,用户消息,严重性和备忘录列的错误消息表。发生错误时,严重性和用户消息用于构建消息对话框。记录错误时,错误代码和技术消息包含在错误日志中(连同客户端的IP,日期,时间等)。

答案 5 :(得分:0)

我倾向于总是有一个表格列出可以访问系统的所有用户。我更喜欢这样做,而不是为了连接池的原因为每个人创建一个单独的数据库用户。

然后通常会有一个表格列出了人们在系统中可以拥有的角色。连接表指示允许谁做什么。对于业务领域中特定于应用程序的规则,此设置通常会变得更加复杂。

审计表是一个非常好的主意。我包含一个人类可读的专栏,以便非技术人员有机会弄清楚发生了什么,以及存储各种键和重要值。

答案 6 :(得分:0)

我发现包含以下字段总是很方便:

  • 无效(或可见/已停止/等)
  • InactiveReason

让“软删除”项目变得非常简单,因此可以保持数据完整性,并且不会丢失有价值的历史信息。

并且+1为Galwegian提到的审核日志表。

答案 7 :(得分:0)

会员资格表。无价的。

答案 8 :(得分:0)

任何包含用户数据的表(与系统数据相对)都有创建日期和上次更新日期。如果有1%的几率你可能需要知道什么时候发生了什么。这将在未来节省许多麻烦。虽然我不喜欢触发器,但使用它们来维护这两个字段是值得的。如果使用真实的数据库登录,那么created_user和updated_user也很有用。