mysql数据库规范化问题

标签 mysql database normalization

这是我的 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/

相关文章:

mysql - 查询mysql中没有主键的表

php - 返回整数和整数+字符串的MySQL SELECT查询

javascript - 带有 'Quantity' 下拉列表的 PHP 表单可将输入的数据行插入到表单中

database - 通过运行另一个 applescript 来更改一个 applescript 中的属性?

algorithm - KNN 算法中需要归一化

python - 使用二进制和连续变量标准化数据以进行机器学习

python - matplotlib hexbin 归一化

PHP变量与mysql结果集

mysql - 获取每组中元素之间的最小差异

mysql - 计算连接到其他表的行数