2012-02-11 61 views
0

我有一个数据库模型,使用几个表来保存业务逻辑数据;其中一个表格包含一个保存用户ID的用户表。代码从这些表中读取数据并生成应用程序中使用的json字符串。为了避免重做查询并重新创建json字符串,我将json字符串存储在一个只有两列的JsonCache表中:UserID和JsonCacheWork。每个用户都有多个JsonCacheWork条目(作为用户交互结果添加条目)。为什么要链接数据库表?

目前,我的数据库关系图与用户表和JsonCache表之间没有关系。它似乎工作正常。

为什么我需要/想要在两个表格之间添加关系,以及保留我的DB图表的原则是什么,如果有的话。

感谢您的解释。

+0

通过“数据库图表”,你是指数据集设计器,Visual Studio服务器资源管理器中的数据库图表,SSMS中的数据库图表还是其他内容? – 2012-02-11 20:54:57

+0

@ChrisShain:linq-to-sql ORM – frenchie 2012-02-11 21:25:13

回答

2

您添加表之间的关系告诉了数据库管理系统的记录这两张表是相关的。 DMS可以强制执行这种关系,这意味着您不会因为UserId不存在而将记录添加到JsonCache表中。

另外,当另一个表中的相关记录被删除(级联删除)时,外键约束可用于自动删除一个表中的记录。所以,当你删除一个用户时,DMS会为你删除他在JsonCache中的条目。

Sql Server是一个关系数据库和表之间的关系是数据库模式的关键部分。他们帮助维护数据的完整性

+2

关系和关系是有区别的。 – 2012-02-11 20:57:38

+0

不会有关系提高性能? – frenchie 2012-02-11 21:25:48

+0

@frenchie:只是稍微。任何关系或其他约束都意味着需要执行的性能略有下降。但是没有他们,你会失去诚信。 – 2012-02-11 21:29:22

1

如果这两个实体之间存在多对多关系,那么您将不得不在两者之间建立连接表。我会说,因为用户和JSON是一对一的,所以我会质疑使用两个单独的实体。我把JSON放在用户表中,并简单地通过用户ID来查询它。我没有看到为JSON提供两列的单独表格的原因。

我可能会改变我的脑海里,如果JSON有一个保质期:有效日期和到期日期,历史上为单个用户等

+0

会发生什么是当用户注销时删除json字符串,因此本质上该表非常小,因为它只包含登录用户的数据。每个用户将在该缓存表中有多个记录,所以我需要将数据放在不同的表中(即不是用户表)。 – frenchie 2012-02-11 21:23:11