什么是“折叠”和“旋转”表?

Nic*_*ick 8 database-design terminology

此类问题的回答和讨论讨论了折叠表与透视表。

例如。

纸质演示文稿和有声电子演示文稿之间的唯一区别在于,后者的折叠桌结构更方便,而前者的枢轴桌结构...

我在谷歌上找不到关于这些术语的含义的任何信息(谷歌给出了关于蛋白质结构的结果)。

有人可以用例子解释这些术语的含义吗?

Wor*_*DBA 10

这只是表示数据的不同方式。也称为宽(枢转)和长(折叠)。作为一个例子并保持简单,假设我们有一个包含 3 个属性的记录:id, name,description在宽(旋转)版本中,每个属性都将是它自己的列,如下所示:

CREATE TABLE `example_table` (
  id int not null,
  name archer(50) not null,
  description archer(100) null
)
Run Code Online (Sandbox Code Playgroud)

在长(折叠)格式中,您将有两列,如下所示:

CREATE TABLE `example_table` (
  property varchar(50) not null,
  value varchar(100) not null
)
Run Code Online (Sandbox Code Playgroud)

如果列事先未知或可能经常更改,则后者为您提供更大的灵活性。但是,它的实现通常更复杂,因为您必须设计一种方法来知道值是什么类型,然后您有序列化/反序列化到存储类型的开销(在本例中为 varchar(100))。

当属性不经常更改并且预先知道时,宽格式更好。这将提供更好的性能,但如果需要更改,则灵活性会降低。

通常,如果您知道要存储的数据的结构,则在可能的情况下选择宽格式,如果您需要最大的灵活性并愿意接受增加的复杂性,则选择长格式。