这种形式的数据库叫什么?

Sha*_*har 4 sql database database-design

我是数据库的新手,我正在考虑为网站创建一个.我从SQL开始,但我真的不确定我是否使用了正确的数据库.

这是问题所在:

http://i.imgur.com/B4ZypkC.png

我现在拥有的是第一个选择.这意味着,我的查询看起来像这样:

user_id      photo_id     photo_url
0            0            abc.jpg
0            1            123.jpg
0            2            lol.png
Run Code Online (Sandbox Code Playgroud)

等等.但对我来说,当数据库变得很大时,这似乎有点低效.所以我想要的是图片中显示的第二个选项.这样的话,然后:

user_id      photos
0            {abc.jpg, 123.jpg, lol.png}
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

user_id      photo_ids
0            {0, 1, 2}
Run Code Online (Sandbox Code Playgroud)

我找不到那样的东西,我只找到普通的SQL.无论如何都要做那样的事情^(即使它不被视为"数据库")?如果没有,为什么SQL在这种情况下更有效?我怎样才能提高效率?提前致谢.

Ker*_*mit 7

你最初的方法user_id, photo_id, photo_url是正确的.这是大多数数据库管理系统使用的规范化关系.

以下关系称为"一对多",因为用户可以拥有许多照片.

您可能希望分离照片详细信息,并在用户和照片之间提供参考表.

您的第二种方法效率低下的原因是因为数据库不是设计用于在单个列中搜索或存储多个值.虽然可以以这种方式存储数据,但您不应该这样做.

如果您想使用第二种方法为用户查找特定照片,则必须使用搜索LIKE,这很可能不会使用任何索引.提取或列出这些照片的过程也是低效的.

你可以阅读更多关于基本数据库原理这里.