是一个专栏表好devise吗?

有一列只有一张桌子可以吗? 我知道这在技术上不是非法的,但它被认为是糟糕的devise?

编辑:

这里有一些例子:

  • 你有一个有50个有效的美国州代码的表,但是你不需要存储详细的状态名称。
  • 电子邮件黑名单。

有人提到添加一个关键字段。 我看到的方式,这个单列将是主要的关键。

是的,devise一张桌子确实是一个很好的devise,以使其效率最高。 “糟糕的RDBMSdevise”通常是以效率低下为中心的。

但是,我发现大多数单柱devise的情况可以从另一列中获益。 例如,州代码通常可以在第二列中列出全州名称。 或者黑名单可以有笔记关联。 但是,如果您的devise真的不需要这些信息,那么拥有单个列是完全可以的。

relational algebra而言,这是一个一元关系,意思是“ 这个事物存在

是的,有一个定义这种关系的表就可以了,例如定义一个域。

这样的表格的值当然应该是自然的主键。

prime numbers查找表是我首先想到的。

我以前用过它们 我的一个客户想要自动阻止任何试图用这个大名单中的电话号码注册的人,所以这只是一个大黑名单。

如果有一个有效的需求,那么我没有看到一个问题。 也许你只是想要一个可能性的列表出于某种原因,你想能够dynamic地改变它,但没有必要将它链接到另一个表。

我有时发现的一个案例是这样的:

countries_id仅包含每个国家/地区的数字ID列。

countries_description包含具有国家ID的列,具有语言ID的列和具有本地化国家名称的列。

company_factories ,包含公司每个工厂的信息,包括Wich所在的国家。

因此,为了保持表中的数据一致性和与语言无关的数据,数据库将这种模式与只有一列的表一起使用,以允许没有语言依赖性的外键。

在这种情况下,我认为一个列表的存在是合理的。

编辑回应评论: Quassnoi

http://lh5.ggpht.com/_7ON9I_WO6GU/SikFHBtzcxI/AAAAAAAAA-4/6MrVUCHGoWU/s800/taules.png

在这个模式中,我可以在表company_factories中定义一个外键,不需要我在表上包含Language列,但如果我没有表countries_id,则必须在表上包含Language列来定义外键。

在单列表格有意义的情况下将会出现极less数情况。 我做了一个数据库,有效的语言代码列表是一个用作外键的单列表。 由于代码本身是关键,因此拥有不同的密钥毫无意义。 并没有固定的描述,因为在某些情况下,语言代码描述会因语言而异。

一般来说,如果您需要一个没有任何附加属性的权威值列表,那么任何情况都是一列表的一个很好的select。

没问题,只要它包含唯一的值。

我始终使用单列表 – 这取决于应用程序devise是否已经使用数据库。 一旦我忍受了build立数据库连接的devise开销,我会尽可能将所有可变数据放入表中。

我可以想到单列表OTMH的两种用法:

1)数据项存在。 经常用在下拉列表中。 也用于简单的合法性testing。

例如。 两个字母的美国州名缩写; 邮寄给我们的邮政编码 在拼字游戏合法的话; 等等

2)稀疏的二进制属性,即在一个大表中,一个二进制属性,只有非常less的logging是真实的。 我可以创build一个单独的表,其中包含属性为true的logging的键,而不是添加新的布尔列。

例如。 有终末病的雇员; 一年360天的银行(最多使用365); 等等

-Al。

一般来说,是的。 不知道为什么你只需要一列。 有一些例外,我已经看到有效的使用。 这取决于你想要达到的目标。

当你考虑数据库的模式时,它们并不是很好的devise,但实际上只能用作实用程序表。

我以前见过有效的数字表 。

数据库的目的是将信息彼此联系起来。 当没有数据可以联系时,你怎么能这样做?

也许这是一些汇编表(即名字+姓氏+出生date),但我仍然不知道为什么你会想这样做。

编辑:我可以看到使用这种表的某种简单的列表。 这是你用来做什么的?

是的,只要这个领域是你所说的主要关键。 原因是因为如果你插入重复的数据,这些行将是只读的。 如果您尝试删除重复的行之一。 它不会工作,因为服务器不知道要删除哪一行。

大多数情况下,我已经在查找types表中看到过这种情况,例如您所描述的状态表。 但是,如果您这样做,一定要将该列设置为主键以强制唯一性。 如果您不能将此值设置为唯一的,则不应使用一列。

我可以想象的唯一用例是用于文字游戏的文字表格。 你只需要访问表来validation一个string是一个单词:从单词中select单词,其中单词=? 但是,保存比关系数据库更多的单词列表的数据结构要好得多。

否则,数据库中的数据通常放置在数据库中以利用数据的各种属性之间的关系。 如果您的数据没有超出其价值的属性,这些关系将如何发展?

所以,虽然不是非法的,但是一般来说你可能不应该只有一列。

我所有的表至less有四个技术领域,串行主键,创build和修改时间戳,以及软删除布尔值。 在任何黑名单中,您还需要知道谁添加了该条目。 所以对于我来说,答案是否定的,只有一列的表格是没有意义的,除了原型化的东西。

是的,这是非常好的。 但ID字段不能伤害它的权利?