数据库规范化验证
Database Normalization Validation
我如何知道我是否正确归一化为 2NF 或 3NF?我仍在努力验证,我是否正确地遵循了算法。
这是对应于 3NF 的规范化吗?我有点迷茫。
根据您的数据架构,您有以下规则:
在 Incident
处可以有 MANY Responders
.
一个Responder
可以有一个Device
.
一个Responder
可以有ONEres_latitude
和ONEres_longitude
.
一个Device
可以有一个Dev_installation
.
如果以上是您想要的,那么我认为没问题(但请再次查看主键)。
此外,我忘了说将 responder_id
和 device_id
分开保存的原因 table 是为了保留历史数据以防 device_id
更改 responder_id
。您还可以将 ResponceIncidentDevice
合并为一个 table 和密钥 incident_id, responder_id, device_id
这样您就可以知道在哪些事件中应答器携带了哪些设备。
编辑:
根据您的评论,您需要进行以下更改。另请注意,最好对所有 table 和列使用小写字母,以避免由于各种引擎实现而导致的区分大小写问题。
Responders
responder_id res_latitude res_longitude
Responders_Devices (pk: responder_id, device_id)
responder_id device_id
1 1
1 2
2 3
2 4
3 5
嘿,有很多关于这个主题的教程,但它们有点复杂,我能理解你的问题。
首先,您的项目对于 First Normalization 表单甚至都不合法,因为您的第二个 table,RespondersIncidents,是一个 table,它有两个外键,但您没有主键。
现在让我为您简化规则。
1NF - 你必须有一个主键(一句话外行定义)
2NF - 无部分依赖,尽量不要在一列中有两个条目,并确保您的主键唯一标识整行。
3NF - 无功能依赖性,确保在一行中只有您的特定主键才能识别整行。例如如果在一行中有主键(自动生成)和唯一的学生 ID,那么我们这里有函数依赖,这意味着我们不需要单独的主键,我们可以使用学生 ID 作为主键。
我希望这对您有所帮助。我保持简短。
我如何知道我是否正确归一化为 2NF 或 3NF?我仍在努力验证,我是否正确地遵循了算法。
这是对应于 3NF 的规范化吗?我有点迷茫。
根据您的数据架构,您有以下规则:
在 Incident
处可以有 MANY Responders
.
一个Responder
可以有一个Device
.
一个Responder
可以有ONEres_latitude
和ONEres_longitude
.
一个Device
可以有一个Dev_installation
.
如果以上是您想要的,那么我认为没问题(但请再次查看主键)。
此外,我忘了说将 responder_id
和 device_id
分开保存的原因 table 是为了保留历史数据以防 device_id
更改 responder_id
。您还可以将 ResponceIncidentDevice
合并为一个 table 和密钥 incident_id, responder_id, device_id
这样您就可以知道在哪些事件中应答器携带了哪些设备。
编辑:
根据您的评论,您需要进行以下更改。另请注意,最好对所有 table 和列使用小写字母,以避免由于各种引擎实现而导致的区分大小写问题。
Responders
responder_id res_latitude res_longitude
Responders_Devices (pk: responder_id, device_id)
responder_id device_id
1 1
1 2
2 3
2 4
3 5
嘿,有很多关于这个主题的教程,但它们有点复杂,我能理解你的问题。
首先,您的项目对于 First Normalization 表单甚至都不合法,因为您的第二个 table,RespondersIncidents,是一个 table,它有两个外键,但您没有主键。
现在让我为您简化规则。
1NF - 你必须有一个主键(一句话外行定义) 2NF - 无部分依赖,尽量不要在一列中有两个条目,并确保您的主键唯一标识整行。 3NF - 无功能依赖性,确保在一行中只有您的特定主键才能识别整行。例如如果在一行中有主键(自动生成)和唯一的学生 ID,那么我们这里有函数依赖,这意味着我们不需要单独的主键,我们可以使用学生 ID 作为主键。
我希望这对您有所帮助。我保持简短。