gpt4 book ai didi

database - 用户消息关系的功能依赖

转载 作者:搜寻专家 更新时间:2023-10-30 23:37:35 26 4
gpt4 key购买 nike

更新:关系模型可能无法按我希望的方式工作,请参阅:Database normalization for facebook-like messaging systemNoSQL 时代来临!

我无法将数据库放入 2nf。为此,您必须先确定所有函数依赖性,然后才能确定属性是质数还是非质数。

看这里:

--------------------------------------------
to | from | msg | time
--------|--------|----------------|---------
joe | jim | hello | 1
jim | joe | hey | 2
jim | joe | how are you | 3
victor | bryce | i love carrots | 4
joe | jim | im doin great | 5
bryce | jim | hello | 6

注意:时间将是唯一的。它将被交易。

是否time->message尽管

time1->"hello"
time6->"hello"

因为我听说只要有独特的消息实例,就可以了。但是,我对此感到困惑。

此外,我想添加一个消息 ID 列。这是好的做法吗?

最佳答案

函数依赖性会问:“如果我知道‘X’的一个值,我是否知道‘Y’的一个且唯一的值?”,其中“X”和“Y”是关系的属性。 (“X”和“Y”指的是属性的。)

如果属性“time”的值实际上是唯一的,那么知道“time”的一个值就意味着您知道一个且只有一个“msg”的值。这意味着函数依赖 time->msg 对这种关系成立。

相比之下,函数依赖性“to”->“msg”在此关系中不成立,因为知道值“joe”意味着我知道“msg”的两个值:'hello ',和'我做得很好'。它不适用于这种关系,所以我们说“to”->“msg”不是这种关系中的函数依赖。

出于完全相同的原因,“to, from”->“msg”在此关系中不成立。所以“to, from”->“msg”不是这个关系中的函数依赖。

Also, I want to add a message id column. Is that good practice?

添加不在原始关系中的属性与数据压缩有关,与规范化无关。规范化从不引入新的属性或新的依赖关系。添加“msg_id”作为属性会引入两个新的函数依赖性(取决于“msg_id”的含义):“msg_id”->“msg”和“time”->“msg_id”。

因此,添加“msg_id”属性有时可能是个好主意(比您想象的要少),但它与规范化无关。假设您打算将“msg_id, msg”投影为一个新表并从原始关系中删除“msg”,您也需要将“msg”声明为唯一。

关于database - 用户消息关系的功能依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com