我正在尝试为我们的管理员实施内部聊天系统,但我对数据库设计不太确定。到目前为止,我有这个(下面),但我希望得到验证和/或改进建议。
Employees {
EmployeeId (smallint)
// ...
}
Chat {
ChatId (int)
Stamp (datetime) // Obsolete, ignore...
}
ChatEmployees {
ChatEmployeeId (int) // Or bigint?
ChatId (int) -> Chat.ChatId
EmployeeId (smallint) -> Employees.EmployeeId
}
Messages {
MessageId (int) // Or bigint?
AuthorId (smallint) -> Employees.EmployeeId
ChatId (int) -> Chat.ChatId
Text (varchar(512))
Stamp (datetime)
}
所以,这就是我到目前为止所做的,但我不确定它是否“足够”。将与ASP.NET数据库进行交互的应用程序是使用ASP.NET MVC 2和Linq to SQL构建的。
提前感谢任何建议!
答案 0 :(得分:2)
ChatEmployees表似乎有点多余。除非你需要记录某人正在聊天但从未说过任何话,否则我会放弃它。
Re:Message.text
我认为“text”可能是一个保留字,因为它在SQL中用作数据类型。可能想避免这个名字。
另外,varchar 512看起来像一个任意数量的字符来允许一条消息,为什么奇数?你选择它只是因为某种原因它是2的幂?