标签: database-theory

“城市”是否应该单独放置一张桌子?

我有以下客户表:

customer_id - int 
company_name - nvarchar
street - nvarchar
city - nvarchar
comments - nvarchar
Run Code Online (Sandbox Code Playgroud)

该应用程序将仅在一个小国家(例如 30 个城市)的部分地区使用。一位朋友告诉我,我应该将 'city' 分隔到不同的表 'Cities' 中,并在客户表中仅使用 city_id。

就我个人而言,我没有看到它有什么好处(除了在客户表上节省一些空间,在这种情况下,对于创建另一个表的成本来说,这对我来说似乎无关紧要)。

他还提到,因为我有重复的列 - city: foo, city: bar, city: foo. (同城客户很少)这不算归一化,是真的吗?

谁是对的?关于这个问题的任何启示?

join database-design tablespaces database-theory

4
推荐指数
2
解决办法
7454
查看次数

nosql 支持什么“规模”的应用程序?

最近我遇到了 Nosql 数据库概念,虽然我学会了如何使用它以及为什么使用它,但我没有得到正确答案,它支持什么规模的项目?

它是否支持更大的应用程序,这些应用程序通常有很多统计用途,比如谷歌分析(示例)?他们的可靠数据或应用程序是否已经在诸如 couchbase 等数据库上运行?

nosql scalability database-theory

3
推荐指数
1
解决办法
326
查看次数

不同的写入和读取数据库之间如何保持同步

我的一位朋友在面试时被问到这个问题。给定两个不同的数据库,一个只执行写入,另一个只执行读取。给定指定的时间延迟,如何保持两者之间的同步。我想补充一点,这些数据库具有相同的架构。

例如:R 是我的读取数据库,W 是我的写入数据库。我想确保读数据库应该是写数据库的副本,说一分钟前。

我在这里热衷的是完成的技术(概念)而不是实现。假设 RDBMS 是 SQL Server。

sql-server database-theory high-availability

3
推荐指数
1
解决办法
616
查看次数

为什么“大”文本文件中的数据会损坏 - 使用数据库的原因

我刚刚开始学习数据库和使用 mysql。我读到数据库比拥有大的 ascii 文本文件更可靠,并且随着 ascii 文本文件变大,它们更容易损坏。

有人可以解释为什么会出现这种情况以及数据库如何在高层次上防止这种情况吗?谢谢你。

database-design database-theory corruption

3
推荐指数
1
解决办法
1191
查看次数

日程表中的盲写是什么意思?

我知道每个冲突可序列化的时间表都是可视图序列化的,但反之则不然。我在一个网页中读到,当日程表可查看序列化但不可冲突序列化时,则存在一些盲目写入。那么什么是盲写呢?

transaction database-theory jobs serialization

3
推荐指数
1
解决办法
9615
查看次数

为什么多值依赖以这种方式命名?

我正在斯坦福开放课件上做一门关系设计课程。我理解为什么函数依赖以这种方式命名 - A->B 意味着在指定 A 时指定了 B,或者换句话说,B 的值在功能上取决于 A 的值。但我想不出一个多值依赖项以这种方式命名的简单原因。理解这一点将使记住和使用这个概念变得更加容易。

database-theory relational-theory

3
推荐指数
1
解决办法
580
查看次数

3
推荐指数
1
解决办法
4万
查看次数

描述使用索引的过滤查询的术语是什么

我正在寻找一个技术术语来描述 SQL 中使用索引的查询类型。我完全忘记了名字,再也找不到它了(甚至有一篇关于这个的维基百科文章,但我找不到它)。它有(AFAIK)两个或三个音节。

它基本上表示使用索引的查询类型,以及查询数据库时使用的最佳实践的构成。

一些最佳实践如下:

  • 不要通过对列名执行函数或计算来搜索
  • 使用LIKE带有尾随通配符的运算符,而不是前导
  • 将列值与固定值(常量)进行比较,

例如。

SELECT column, date FROM table (..)

(..) WHERE column LIKE 'A%' -- OK, because looks up the column
(..) WHERE column LIKE '%A%' -- INCORRECT, expensive
(..) WHERE SUBSTRING(column, 1, 3) = 'abc' -- INCORRECT
Run Code Online (Sandbox Code Playgroud)

您知道描述这些类型查询的术语是什么吗?

谢谢。

oracle sql-server database-theory

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

“\”符号是什么意思?

我是数据库学习的新手,遇到了这个\符号。我用谷歌搜索但找不到它的意思。

它用于上下文中Q = R\S,其中 Q、R 和 S 是关系。

(这里的= 符号表示“相当于”)。

database-theory

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

SQL Server:需要我的白皮书的主键建议

我已经厌倦了向我们研发团队中的每个初级开发人员解释为什么他应该使用主键以及如何使用。所以我决定写一个小白皮书,每个新开发人员都应该阅读。这是它的草稿。

免责声明:

  1. 我知道并理解聚集索引和主键之间的区别
  2. 在以下问题中,PRIMARY KEY 表示 PRIMARY KEY CLUSTERED,而 WITHOUT PRIMARY KEY 表示没有 PK 和 Clustered INDEX
  3. 请注意,这是面向初级而非 SQL 程序员的白皮书
  4. 他们所做的所有事情 - 在进入主要开发分支之前进行审查
  5. 我不会向他们解释——什么时候使用聚集索引和非聚集主键会有好处——否则我会陷入过早的优化地狱

问题是- 我还应该在文档中添加什么?可能是——我应该改些什么呢?更详细的解释是什么?

草稿来了:

  • 主键必须约束数据库中的任何表。
  • 如果没有 PK,一个表被认为是一个堆,而 SQL Server 对这种类型的数据的使用非常有限——我唯一应该说它是合适的——一个用于从 SQL Server 引擎外部快速批量加载数据的缓冲区。
  • 避免使用自然主键。主要是因为它们的自然(高斯)分布。例如,在具有基于 Family 和 Name 的主键的 PhoneBook 表中,Smiths 和 Wilsons 将很多,而 Zimmerbergs 少得多,这表明,包含 Smiths 和 Wilsons 的页面将比其他页面更频繁地拆分,并且也更频繁地查询 - 这成倍增加性能影响。这会导致性能下降,因为主键的页面很满,并且大多数搜索都会命中 PK 的稀疏页面。

此外,即使使用具有(我希望)扁平分布的 SSN 或 ID Number,因为 PK 也不能解决 PK 的页面拆分问题,因为这些数字没有任何组织顺序。

  • 次要 - 自然 PK 通常是复合的。这会创建复合外键和宽索引,从而损害性能。所以, ...
  • 避免使用复合 PK。使用简单代理 PK 和复合 UNIQUE 索引比使用多合一复合 PK …

database-design sql-server database-tuning database-theory

0
推荐指数
2
解决办法
1025
查看次数

如何通过 SQL 查询识别 SQL Server 品牌

第三方 API 公开接受“SQL”查询的端点。他们的示例是简单的SELECT语句,但我想编写更复杂的查询。

他们没有指定他们使用的是哪个 SQL 品牌,这意味着我不知道应该遵循的确切语法。

如何使用一个或多个 SQL 查询(无命令行访问、文件权限等)识别 SQL 品牌(SQL Server、MySQL、Azure SQL、Postgres 等)?

query syntax database-theory relational-theory

0
推荐指数
1
解决办法
69
查看次数