Database design 每个用户都有自己的数据库表吗?

Database design 每个用户都有自己的数据库表吗?,database-design,Database Design,对于大多数可以执行CRUD操作的主要站点,每个用户都有自己的数据库表吗?我很想看到一个多用户的数据库结构示例,我正在查看我的wordpress数据库结构,但无法想象twitter、tumblr甚至stackoverflow是如何运行数据库的。为用户动态创建表有那么容易吗?提前感谢。有多种不同类型的数据库,但通常不是。更常见的情况是,您只有一个表,但有一个指定用户ID的字段。在MySQL中,您可以选择用户ID与特定值匹配的行子集,这有点像动态创建每个用户表。为什么每个用户都有自己的表?用户应该只是

对于大多数可以执行CRUD操作的主要站点,每个用户都有自己的数据库表吗?我很想看到一个多用户的数据库结构示例,我正在查看我的wordpress数据库结构,但无法想象twitter、tumblr甚至stackoverflow是如何运行数据库的。为用户动态创建表有那么容易吗?提前感谢。

有多种不同类型的数据库,但通常不是。更常见的情况是,您只有一个表,但有一个指定用户ID的字段。在MySQL中,您可以选择用户ID与特定值匹配的行子集,这有点像动态创建每个用户表。

为什么每个用户都有自己的表?用户应该只是表中的一个条目。然后使用该用户的id在其他表中查找其他记录

如果数据库包含sy 6表,那么每次添加用户时,也必须再次添加其他表


因此,现在您有10个用户和60个表。

没有必要为每个用户提供单独的表。但数据库可能涉及到某种优化

用户实际上表示单个表的行。对于用户,可能有其他特定用途的表。假设“Comments”表包含用户的注释,并且该表可以包含来自用户的多个注释,则该用户表与Comments表具有一对多关系


我在这里看到的一些优化是创建视图(certin案例中的物化视图)、基于所使用的查询的列索引,甚至基于日期/用户或应用程序的某些其他相关条件对表进行分区

你的问题的答案是“不”。这些站点通常为用户提供一个表,其中表的键是一个整数id字段,属性是用户的属性(例如名称、屏幕名称、密码等)。在SQLite中,它如下所示:

create table User (id integer, email string);
然后你就有了一些表格,比如博客和评论。每个表都包含来自所有用户的博客帖子和评论。要标识用户,有一个“user_id”字段,用于标识该表中属于特定用户的行

create table BlogPosts (id integer, description text, user_id integer);
create table Comments (id integer, description test, blogpost_id integer, user_id integer);
其他数据库的语法类似。“用户id”将博客文章与用户绑定,并将评论与用户绑定。blogpost\u id将博客帖子绑定到用户。i、 e.您可以将每个用户与其所有问题和评论关联起来


您可以为每个用户创建一个表,但是您必须有一个映射,说明哪个用户连接到哪个数据库,并且您需要始终为每个用户打开到数据库的新连接

> P>您不能这样做,因为参数化查询不能将表名作为参数。

在求解动态表创建之前,我会寻找其他解决方案,现在考虑连接到特定用户的正确表……)哎呀!是的,什么是噩梦般的属性值(EAV)表通常是令人讨厌的-性能差,但可能是适应功能需求的必要条件。@天哪,EAV是如何发挥作用的?根据数据类型,您有不同的表,但您可以通过字段将条目链接到用户。我不确定这与EAV有什么关系。物化视图是臭名昭著的不协调视图;表分区是一项必须付费的功能(它仅在SQL Server的企业/开发人员版上可用,不知道Oracle…)。这两个概念都超出了OP的要求。