相关疑难解决方法(0)

为什么使用术语“关系(al)”?

用英语,我们可能会谈论鲍勃和蒂姆之间的关系。也许他们是堂兄弟。在这种情况下,“关系”一词对我来说很有意义。

在关系数据库的上下文中,我理解该术语指的是什么,但我不明白为什么要使用它。我认为理解为什么使用它会帮助我更好地理解这个领域,所以我想了解为什么使用它。

  • 例如,为什么一个人被认为是一个“关系”?在英语中,关系是描述两个实体如何关联的名词。它不是指实体本身。在关系数据库的上下文中,“关系”是指实体本身。为什么?
  • 我知道关系模型是在层次模型和网络模型(例如父、邻居)之后出现的。但在这些模型中,实体之间也有关系。那么为什么称这个模型为关系模型呢?有更具体的短语/术语吗?或者也许我们应该说所有三个模型都是关系模型,但是层次模型和网络模型是特定类型的关系模型?
  • 如果我们有彼此不相关的独立实体怎么办。说,人,门和树。术语“关系(al)”仍然适用吗?

(也许这应该是多个问题。我认为答案是高度相关的——也许只有一个答案——所以我认为这是一个单一的问题是有意义的。如果我错了,请告诉我,我将创建单独的问题。)


编辑:此图可能有助于可视化一种关系正在将不同的域相互关联:

在此处输入图片说明

terminology relational-theory

26
推荐指数
6
解决办法
2229
查看次数

大表中的新布尔列或 - 坏主意?- 新的相关 0-1 表

我有一个像这样的大表(2000 亿行):

CREATE TABLE A (
A_Id INT NOT NULL PRIMARY KEY, 
A_Attribute1 VARCHAR(100) NOT NULL, 
... )
Run Code Online (Sandbox Code Playgroud)

我必须添加新的布尔列 NOT NULL 并将 false 作为默认值,如下所示:

ALTER TABLE A ADD A_BitAttribute BIT NOT NULL DEFAULT 0
Run Code Online (Sandbox Code Playgroud)

而且,在未来,该列大部分时间为 0。

为了防止在 A 表中添加此列的成本,我考虑创建一个新的相关表,如下所示:

CREATE TABLE ABitAttribute (
A_Id INT NOT NULL PRIMARY KEY, 
, CONSTRAINT FK_ABitAttribute_A FOREIGN KEY (A_Id) REFERENCES A (A_Id) ON DELETE CASCADE
)
Run Code Online (Sandbox Code Playgroud)

此表中的一行表示 A_Id 为 True,没有行表示 False。检索数据所需的外连接并没有让我太烦恼。

使用这种技术有什么重大缺点或违反理论吗?

编辑 :

  • 它必须与 SQL Server 2005 兼容
  • 服务中断必须最小(我们通常保证数据库不超过 1 小时)

database-design sql-server

6
推荐指数
1
解决办法
327
查看次数