问题:我想设计一个网站,我需要一个数据库,但我不知道哪个结构更好!
将会发生什么:用户会在收藏夹中添加一些URI。
可能的结构:
结构一:
TABLE "USERS":
=====================================================================
id | name | last_name | urls
1 | John | Smith | [google.com,stackoverflow.com,yahoo.com,...]
=====================================================================
结构二:
TABLE "USERS":
=============================================
id | name | last_name
1 | John | Smith
2 | Joe | Roth
==============================================
TABLE "URLS":
==============================================
id | user_id | url
1 | 1 | google.com
2 | 1 | stackoverflow.com
3 | 2 | ask.com
4 | 1 | yahoo.com
5 | 2 | being.com
==============================================
哪种结构最好?提前谢谢!
答案 0 :(得分:1)
绝对创建另一个保存网址+ user_id的表格。您的第一种类型不在Normal form。
答案 1 :(得分:1)
第二个模式(在URLS.user_id上使用外键约束)将更易于管理。 select
查询需要使用join
并且您将执行更多insert
s,但您不需要执行字符串解析来确定网址是什么(哪个使用第一个架构,您需要每个select
和update
}。
我当前工作的生产数据库中的一个表格具有类似于第一种情况的模式,当他们必须编写使用它的代码时,它会使我的整个部门感到畏缩和抱怨。然而,该表仍然存在,因为修复它将是一次大规模的改革。 (该表由一位不再在此工作的经理创建。)如果您现在正在创建架构,请执行正确,而您仍然可以。