我正在设计一个系统,该系统具有用于存储用户及其相关信息的数据库。更具体地说,表中每个用户的信息很少,类似于名称,密码,uid。
然后,每个用户都有零个或多个容器,我最初的做法是在数据库中创建第二个表来保存容器,并有一个字段引用拥有它的用户。因此,类似于容器名称,内容,所有者。
因此,对容器数据的查询将类似于:
我的问题是:这是一个好的方式吗?我在考虑可扩展性,假设我们有数千个用户,每个用户都有5个容器(但每个用户的容器数量可能不同,但5个可能是典型情况)。我的担忧是,当查询中有5个条目时,通过数据库进行搜索将变得缓慢,而我可能只需要查询其中一个容器的内容,并且我们正在查看具有4995个条目的数据库。如果我订阅了一百万个用户会发生什么呢?它会成为一个庞大的表,直观上感觉这是一个不好的想法。
我另一个想法是为每个用户创建一个表,但这似乎也不是一个很好的解决方法,因为这样会在数据库中创建1000个表(也是根据直觉),这似乎是一个错误的做法。
非常感谢您对如何设计这个问题的帮助,我希望这些都很清晰易懂。
然后,每个用户都有零个或多个容器,我最初的做法是在数据库中创建第二个表来保存容器,并有一个字段引用拥有它的用户。因此,类似于容器名称,内容,所有者。
因此,对容器数据的查询将类似于:
SELECT content
FROM containers
WHERE (containerName='someContainer' AND owner='someOwner');
我的问题是:这是一个好的方式吗?我在考虑可扩展性,假设我们有数千个用户,每个用户都有5个容器(但每个用户的容器数量可能不同,但5个可能是典型情况)。我的担忧是,当查询中有5个条目时,通过数据库进行搜索将变得缓慢,而我可能只需要查询其中一个容器的内容,并且我们正在查看具有4995个条目的数据库。如果我订阅了一百万个用户会发生什么呢?它会成为一个庞大的表,直观上感觉这是一个不好的想法。
我另一个想法是为每个用户创建一个表,但这似乎也不是一个很好的解决方法,因为这样会在数据库中创建1000个表(也是根据直觉),这似乎是一个错误的做法。
非常感谢您对如何设计这个问题的帮助,我希望这些都很清晰易懂。