这是我的 3 个表:
表1——存储用户信息,具有唯一性数据
表 2 -- 商店地点类别,例如多伦多、纽约、伦敦等,因此这也是独一无二的
表 3 -- 有重复的信息。它存储了用户去过的所有地方。
这 3 个表由这些 ID 链接或连接:
表 1 有一个“table1_id”
表 2 有一个“table2_id”和“place_name”
表 3 有一个“table3_id”、“table1_id”、“place_name”
我有一个管理员可以看到所有用户的界面。用户旁边是“编辑”按钮。单击该编辑按钮允许您在表单字段中编辑特定用户,该表单字段有多个用于“地点”的下拉框。
如果管理员编辑用户并为用户添加 1 个“位置”,我将使用 php 插入该信息。如果管理员决定取消选择那 1 个“位置”,我是将其删除还是将其标记为打开和关闭?如果管理员决定为用户选择 2 个“位置”呢?改变第一个“地方”并添加一个额外的“地方”。我的表格会继续增长吗?我只会有多余的信息吗?
谢谢。
最佳答案
表 1 和表 2 听起来是正确的。表 3 不应包含 place_name。相反,您应该拥有对 table1_id 和 table2_id 的外键引用(您可以选择保留 table3_id)。这使得 table3 成为 junction table .
当您想要为用户删除一个位置时,您将删除 table_3 中的一行(仅此而已)。添加地点时,首先检查它是否存在于表 1 中。如果不存在,则将其添加到表 1。然后,向表 3 添加一行。更改(例如,为用户重命名 UI 中的地点)应该分解为先删除再添加。
这将避免冗余信息。
关于mysql数据库规范化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608549/