当前位置: 首页 > 知识库问答 >
问题:

MySQL中的数组?[副本]

苏淇
2023-03-14

我有一个如下格式的数据库:

URLID   USERNAME   URL
0       jake       abc.com
1       jake       123.com
2       po         google.com
3       po         googl3.com
4       po         ranoutoffakeurlslol.com

然而,我希望它是这样的:

USERNAME    URLS
jake        {abc.com, 123.com}
po          {google.com, googl3.com, ranoutoffakeurlslol.com}

我该怎么做?如果不可能,那么,如何使方法1更有效?提前感谢!

共有2个答案

吉鸿宝
2023-03-14

我个人不想用后一种格式建立数据库,因为每当您想从中提取数据时,它都会引入大量格式问题。

通常,我要做的是将数据拆分为两个或三个表,这取决于是否可以将did用户名与同一URL关联。如果他们不能(一对多关系),我将构建两个表:

USERS
USERID  USERNAME 
0       jake      
1       po    

URLS
URLID   USERID   URL
0       0      abc.com
1       0      123.com
2       1      google.com
3       1      googl3.com
4       1      ranoutoffakeurlslol.com

或者,如果URL可以有不同的用户(多对多),则用户将是相同的,但URL将是:

URLS
URLID     URL
0        abc.com
1        123.com
2        google.com
3        googl3.com
4        ranoutoffakeurlslol.com

还有第三张桌子可以加入他们

USERURLS
USERID    URLID
0         0
0         1
1         2
1         3
1         4

这种方式看起来有点复杂,但重复的数据更少(只有int而不是字符串),并且以后更容易扩展,例如如果您想在用户名中添加地址、电话号码、密码或其他任何内容。如果您不熟悉,我会研究关系数据库的普通表单(NF)。(维基百科文章)

孔厉刚
2023-03-14

由于这是一种一对多关系(即一个用户可以与多个URL相关联),您应该创建一个单独的表来存储URL:

URLID   USERNAME
1       jake
2       po

URLID   URL
1       abc.com
1       123.com
2       google.com
2       googl3.com
2       ranoutoffakeurlslol.com
 类似资料:
  • 有没有办法在mysql表中创建数据类型“数组”的列?如下所示:

  • 我有一个对象数组,如下所示; 我想把它转换成下面的对象 在Javascript或Angular 4中有没有同样的方法?

  • 当我打印出 我得到的回报是:

  • 我有两个不同的数组,我想删除第二个数组中第一个数组元素的所有副本。我尝试了一些拼接和索引的方法,但没能实现。查看了一些其他帖子,但找不到我真正想要的。下面是一个示例代码。谢谢大家。

  • 当我试图比较两个int数组时,即使它们完全相同,中的代码仍然没有执行。这是为什么?

  • 问题内容: 我想使用构造函数制作对象数组的深层副本。 但是,由于某种原因,我上面的内容不起作用。我有运行的自动化测试,但未通过这些测试。所以这里有一个错误,我不确定是什么。 问题答案: 您已实现的是 浅表 副本。要实现 深度 复制,您必须进行更改 一些事情,分配一个 副本 的到。您如何执行此操作取决于班级。可能的替代方法是: 复制构造函数: 工厂方法: 克隆: 笔记: 上面假设复制构造函数,工厂方