内部管理员聊天系统的数据库设计

时间:2010-10-15 02:45:11

标签: sql-server-2008 database-design

我正在尝试为我们的管理员实施内部聊天系统,但我对数据库设计不太确定。到目前为止,我有这个(下面),但我希望得到验证和/或改进建议。

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构建的。

提前感谢任何建议!

1 个答案:

答案 0 :(得分:2)

ChatEmployees表似乎有点多余。除非你需要记录某人正在聊天但从未说过任何话,否则我会放弃它。

Re:Message.text
我认为“text”可能是一个保留字,因为它在SQL中用作数据类型。可能想避免这个名字。

另外,varchar 512看起来像一个任意数量的字符来允许一条消息,为什么奇数?你选择它只是因为某种原因它是2的幂?