只有一列的表格可以吗?
我知道这不是非法的。
例如:
- 您有一个包含50个有效美国州代码的表格,但您不需要存储冗长的州名。
- 电子邮件黑名单。
有人提到添加关键字段。但是单列将是主键。
只有一列的表格可以吗?
我知道这不是非法的。
例如:
有人提到添加关键字段。但是单列将是主键。
就关系代数而言,这将是一个一元关系,意思是“这个东西存在”
当然可以有一个定义这样一个关系的表:例如,定义一个域。
这个表的值应该是自然主键。
我首先想到的是一个质数查找表。
是的,设计一张表格使其最有效率是很好的设计。通常所说的“糟糕的RDBMS设计”都集中在效率不高上。
然而,我发现大多数单列设计情况下会从增加一列得到好处。例如,州编码通常可以在第二列中拼写完整的州名,或者黑名单可以关联笔记。但是,如果您的设计确实不需要这些信息,那么使用单列也完全没问题。
我以前用过它们。我的一个客户想自动屏蔽那些在他的大黑名单中尝试使用电话号码进行注册的人。
我发现的一种情况有时是这样的:
表countries_id,只包含一个数字ID的列,用于每个国家。
表countries_description,包含国家ID的列、语言ID的列和本地化国家名称的列。
表company_factories,包含公司每个工厂的信息,包括所在国家。
因此,为了在表中维护数据的一致性和语言无关性,数据库使用具有仅一个列的表结构,以允许没有语言依赖性的外键。
在这种情况下,我认为存在一个列的表是有道理的。
根据Quassnoi的评论编辑:
(来源:ggpht.com)
在这个模式中,我可以在表company_factories 中定义一个不需要在表中包含语言列的外键,但如果我没有表countries_id,我必须在表中包含Language列,以定义外键。
很少情况下单列表才是有意义的。我曾经做过一个数据库,其中有效语言代码列表是一个单列表,用作外键。没有必要使用不同的键,因为代码本身就是关键字。而且在某些情况下,语言代码描述会因语言而异,没有固定的描述。
总的来说,任何需要权威值列表且没有其他属性的情况都适合用单列表。
大多数情况下,我在查找类型的表格中看到了这种情况,比如你描述的州表。但是,如果你这样做,请确保将该列设置为主键以强制唯一性。如果无法将此值设置为唯一,则不应使用单个列。