我正在聊天网站上工作。我正在使用asp.net和SQL Server 2008
这个想法与普通的聊天网站一样。我的问题是,我不明白如何创建一个好的数据库设计。
我对使用SQL Server的vb asp.net非常了解。
在我的项目中,我创建了一个表,用于添加包含ID, uName, uPassoword
和uDetail
列的新用户。
然后....我创建了一个名为User_Friends (uName , uFriendName)
的表。
假设当用户“abc”添加新朋友时,它会在此表中保存关系uName =“abc”和uFriendName =“xyz”,所有其他用户都会添加朋友,所有这些数据都将放在一个表中(User_Friends
)。所有详细信息,谁的朋友信息都在此User_Friends
表中。
我的问题是:
那么从一个表中获取详细信息是否会是一个缓慢的过程?
请告诉我如何设计数据库或给我一些有用的帮助链接。
答案 0 :(得分:3)
将聊天数据保存到数据库是一项耗费空间的任务,我希望您这样做:
用户A与他的朋友B聊天...一旦聊天窗口关闭,就制作一个文本文件 并将其保存到文件夹结构,如年/月/日,文件名为'userid + user friend id',例如:AB.txt
每天都要将数据附加到同一文本文件中。因此,将来我们将在一个文件中显示一天内完成的所有聊天。
使用ID,文件名,创建日期时间添加表聊天记录。检查数据库中是否已存在该文件名(如果存在)获取该文件并将数据附加到该文件 否则将具有完全限定路径的行插入数据库并将聊天数据保存到其中
答案 1 :(得分:1)
这一切都取决于您希望如何使用存储的数据。
对于用户结构我建议在一个单独的表中建立关系(朋友,被阻止,......等等),即
表“用户”:user_id,昵称,姓名,电子邮件,状态,.... table“relation”:user_id1,user_id2,relation_type
它更灵活,因为您不限制关系任何一方有多少用户,但也增加了一些复杂性。
关于消息历史记录,我会将每条消息记录在表格中:
表“messages”message_id,send_by,send_to,timestamp,message_text
并清理早于......的邮件。我想您无论如何都不需要整个历史记录。
关于表现,这是略有不同的事情。数据库旨在处理大量数据,但如果你没有正确地索引它们,那么它将很慢。先完成桌面设计。并考虑稍后索引 - 基于您将执行的查询类型。