我想知道我的方法在这里是否不正确
我有一个简单的网站,您可以注册。它有一个名为USERS
的主数据库,它有一个包含所有用户列表的表,然后为每个新用户生成一个名为DB1,DB2,...,DBn
的新数据库。我这样做的原因是因为每个用户存储了大量信息,我认为这是一种更好的方法。但是,现在我遇到的问题是用户数据库需要访问USERS
数据库中的表(对于外键),我无法弄清楚如何做到这一点。
我承认我对MySQL没有多少经验,因此为每个用户创建一个新数据库可能是一个非常糟糕的决定。是这样的吗? MySQL的效率如何?例如,我可以为(假设的)100,000个用户创建一个列表,其中每个用户还有100个条目,比如图片,他们已经上传。
由于
答案 0 :(得分:6)
我也在研究同样的问题。我找到了解决方案:http://drupal.org/node/37075
您可以在每个数据库中创建表示常用USERS表的VIEW。
mysql> use DB1;
mysql> CREATE VIEW users AS
mysql> SELECT *
mysql> FROM USERS.users
答案 1 :(得分:3)
这是一个非常糟糕的设计决定。您要做的是为此应用程序中的所有表创建单个数据库。在您的示例中,您将拥有一个数据库(称为MyProject
)。您将拥有一个用户表,称之为User
,其中包含所有用户条目 - 100,000个条目是现代硬件的小型数据库,所以不要担心它。然后,您将拥有一个名为UserPhoto
的表,其中包含对User
中主键的引用以及您需要的任何其他数据。
答案 2 :(得分:1)
您可以使用语法
在数据库之间进行查询db_name.table_name.table_field