我有两个不同的表,我不确定将其从第一范式转换为第二范式的最佳方法。第一个表包含用户信息,而第二个表是与帐户关联的产品。如果我这样做,我知道它只在 NF1 中,并且 User_ID 的外键将在表 2 中重复多次。请参见下表。
Table 1
|User_ID (primary)| Name | Address | Email | Username | Password |
Table 2
| Product_ID (Primary Key) | User_ID (Foreign Key) |
这是制作用户 ID 不重复的表二的更好方法吗?我考虑过在数据库中为每个用户创建一个单独的表,但从我在 StackOverFlow 上阅读的所有其他问题来看,这不是一个好主意。
我使用的约束是 1-1000 个用户,表二每个用户大约有 1-1000 个索引。有没有更好的方法来创建这组表?
最佳答案
我没有看到违反 NF2。它指出:
a table is in 2NF if it is in 1NF and no non-prime attribute is dependent on any proper subset of any candidate key of the table.
引自维基百科文章“第二范式”,2016-11-26
表2只有一个候选键,主键。主键仅包含一列。因此,不存在候选键的适当子集。因此,除非不满足 NF1,否则不能违反 NF2。
关于php - 规范化一个简单的 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820697/