当前位置:  开发笔记 > 后端 > 正文

为我的网站上的每个用户分配一个MySQL数据库是不合理的吗?

如何解决《为我的网站上的每个用户分配一个MySQL数据库是不合理的吗?》经验,为你挑选了3个好方法。

我正在创建一个基于用户的网站.对于每个用户,我需要一些MySQL表来存储不同类型的信息(即userInfo,quotesSubmitted和ratesSubmitted).以下是一个更好的主意:

a)为站点创建一个数据库(即"mySite"),然后在其中创建数百或数千个表(即"userInfo_bob","quotessubmitted_bob","userInfo_shelly"和"quotesSubmitted_shelly")

要么

b)创建数百或数千个数据库(即"Bob","Shelly"等),每个数据库只有几个表(即"Bob"内部:userInfo,quotesSubmitted,ratesSubmitted等)

我应该使用一个数据库,该数据库中的许多表,还是每个数据库的许多数据库和几个表?


编辑:

问题是我需要跟踪谁评价了什么.这意味着如果用户已经评价了300个报价,我需要能够确切地知道用户评价了哪些报价.

也许我应该这样做?

一张报价表.一个表列出用户.一个表记录已经进行的所有评级(即三列:用户,报价,评级).这看似合理.这有什么问题吗?



1> Ed Guiness..:

使用一个数据库.

使用一个表来保存用户,使用一个表来保存引号.

在这两个表之间,您有一个表,其中包含将用户与引号匹配的信息,此表将保留用户给出报价的评级.

这种简单的设计允许您存储几乎无限数量的报价,无限制的用户,并且您将能够将每个报价与零个或多个用户匹配,反之亦然.

中间的表将包含用户和引用表的外键.

您可能会发现查看一些数据库设计基础知识很有帮助,这里有很多关于stackoverflow的相关问题.

从这些开始......

什么是正常化?

在设计数据库时要记住什么是重要的

有多少字段"太多"了?

更多表格或更多列?


我不得不在这里回应edg.在开展此类项目之前,您确实需要阅读更多内容并研究数据库设计.你可以很容易地开始你认为正确的脚,只发现A)它不是右脚B)你的脚下是悬崖和C)......

2> Alnitak..:

我应该使用一个数据库,该数据库中的许多表,还是每个数据库的许多数据库和几个表?

也不应该使用一个数据库,一个用户表,一个报价表,一个费率表等.

然后,您在(例如)您的报价表中有一列,说明报价所针对的用户.

CREATE TABLE user (
    user INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ...
);

CREATE TABLE quote (
    quote INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user INT(10) UNSIGNED NOT NULL,
    ...
);

CREATE TABLE rate (
    rate INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user INT(10) UNSIGNED NOT NULL,
    ...
 );

然后JOIN,在SELECT语句中使用SQL 将表连接在一起.

编辑 - 上面假设用户和费率之间存在多对一的关系 - 其中有"多对多"关系,您需要为每种数据提供一个表,然后是另一个包含每个用户行的表< - >速率对.



3> dkretz..:

许多数据库存在两个问题(实际上还有很多,但从这些开始.)

    您不能使用数据库名称的参数.

    当你第一次换桌子时你会怎么做?(提示:工作X(#数据库)).

并且"许多表格"表明您正在考虑每个用户的表格.这是另一个同样有问题的想法.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有