我是sql的新手,我需要帮助设计我的表格。这是一个场景:
我是一张用户表。每个用户只能属于约600个社区中的一个社区。在users表中,我将有一个community_id。在网站上获取用户信息时,我将获得community_id。以下哪个选项更好:
我是否应该有一个将community_id映射到特定社区名称的javascript对象。这样我就不需要在SQL中创建表了吗?
我应该在sql中创建另一个表,并从表关联中获取community_name吗?一个用户有一个社区(用户表将community_id作为外键)
或者我应该只存储community_name字符串,而不是在user表中保存为community_id。是否通过社区字符串与整数搜索变得更难?
一个或另一个是个坏主意吗?做这种手术的最佳做法是什么?大多数情况下,我会做很多阅读而不是写作?
请不要删除此问题,因为我对如何构建数据库非常困惑。从最好的人那里获得帮助会非常有帮助。
答案 0 :(得分:2)
选项1很糟糕。每次添加社区时都需要更改代码。
选项2是最佳选择。要添加社区,您只需要插入一行。您甚至可以创建一个管理窗口来执行此操作,因此您甚至不必直接在数据库中执行此操作。 SQL中的连接很简单,并且使用外键约束很容易实现关系。
选项3很糟糕。如果社区名称发生更改,则必须更新该社区中的所有用户。在正确规范化的数据库中,社区将存储在单独的表中。您可能也会为社区添加额外的字段,并且您不希望将它们添加到所有用户表中。
答案 1 :(得分:1)
有一个单独的社区表。
使用名称而不是id作为主键的问题是名称更改。