我是数据库的新手,我正在考虑为网站创建一个数据库。我开始使用 SQL,但我真的不确定我是否使用了正确类型的数据库。
问题是:
我现在拥有的是第一个选项。所以这意味着,我的查询看起来像这样:
user_id photo_id photo_url
0 0 abc.jpg
0 1 123.jpg
0 2 lol.png
等等。但对我来说,当数据库变大时,这似乎有点低效。所以我想要的是图片中显示的第二个选项。那么像这样的事情:
user_id photos
0 {abc.jpg, 123.jpg, lol.png}
或者类似的东西:
user_id photo_ids
0 {0, 1, 2}
我找不到类似的东西,我只找到普通的 SQL。无论如何做这样的事情^(即使它不被认为是“数据库”)?如果不是,为什么 SQL 在这些情况下更有效?我怎样才能让它更有效率? 提前致谢。
最佳答案
您最初使用 user_id, photo_id, photo_url
的方法是正确的。这是大多数数据库管理系统使用的规范化关系。
以下关系称为“一对多”,因为用户可以拥有多张照片。
您可能想要尽可能地分离照片细节,并只提供用户和照片之间的引用表。
第二种方法效率低下的原因是因为数据库并非设计用于在单个列中搜索或存储多个值。虽然可以以这种方式存储数据,但您不应该这样做。
如果您想使用第二种方法为用户定位特定照片,则必须使用 LIKE
进行搜索,这很可能不会使用任何索引。提取或列出这些照片的过程也会很低效。
您可以阅读有关基本数据库原理的更多信息 here .
关于sql - 这种形式的数据库叫什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799168/