SQL 架构建议

SQL Schema recommendations

我是 SQL 的新手,尤其是在 PHP 中使用它时,我目前正在开发一款允许用户跟踪阅读情况的应用程序。第一个版本将有一个简单的日历,允许您输入开始日期和结束日期。

我的问题是关于我的用户登录和管理系统。现在,我的 SQL 数据库设置包含三个表 - 用户、书籍和事件。 Users 很容易解释,Books 只是 Books 和各种信息的集合,然后 Events 有这个设置。

|  UserID  |  BookID  |  StartDate  |  EndDate  |
|    1     |    2     |   6-10-15   |  6-12-15  |
|    1     |    3     |   6-13-15   |  6-16-15  |

现在我正计划让一小群人使用我的应用程序,但我担心如果我想扩展它,我的 SQL 数据库可能会限制它。 我的问题是:如果我最终有成千上万的用户和数百万的“事件”,我当前的模式是否能够处理负载?

我只是担心当我遇到大量事件时,我将无法快速取回数据。我考虑过为每个用户创建一个新数据库,并与书籍等共享公共数据库,但我不知道如何处理 'friends' 之间的共享 info/messages/books。

马上,具有 Users/Books/Events 的单个数据库将完成工作。我只是好奇其他人对进一步分离数据的看法。

SQL 服务器,如果配置了正确的数据库架构,可以处理数千万或数亿行,性能相当不错。当然,这取决于您在做什么...如果您只是按 date/user/book 查找事件,那么这个模式就可以了。您需要正确索引正确的列,但数百万行没有问题。

不过,我怀疑您正在尝试 link 用户参加活动,并且每个活动可能有多个用户(并且每个用户有多个活动)。在这种情况下,您需要一个联结点 table 将用户指向不同的事件。

Users
  UserID int

Events
  EventID int
  <dates, or whatever>

EventUsers
  UserID int (Foreign key to Users.UserID)
  EventID int (Foreign key to Events.EventID)