【问题标题】:Can a column value contain spaces if a table wants to satisfy 1NF?如果表要满足 1NF,列值可以包含空格吗?
【发布时间】:2021-06-16 17:02:07
【问题描述】:

我目前正在学习数据库设计,并遇到过数据库规范化及其规范化阶段。

我知道为了让表满足 1NF,所有列值都必须是原子的。但是,假设我们有一个这样的学生表:

id | first_name | last_name | country_of_origin

对于一个条目,我可以有一个具有以下属性的学生:

1 | John | Doe | Japan

这些列都是单个单词,因此这些值被认为是原子的。但是,包含空格的单词呢,比如说:

1 | John | Doe | United States of America

“美利坚合众国”是一个被视为原子术语的术语吗?我的意思是,从技术上讲,您可以将其缩短为美国,但是像巴布亚新几内亚这样的国家呢?在这些国家/地区,必须使用空格来构建该词?我得到像“日本,巴西,加拿大”这样的逗号分隔字符串在这种情况下不被认为是原子的。

那么,什么是数据库设计中的原子值,什么不是?

【问题讨论】:

  • 文本是否描述了单个实体?大概是这样……
  • @Stu 是有道理的。因此,如果文本描述单个实体而不是单个列中的多个实体,则它被认为是原子的。谢谢!
  • “原子”is in the eye of the application。 “1NF”has many meanings. 都涉及将一些具有参数化结构的表替换为一些表,每个参数有一列。因此,您需要告诉我们您的定义,最好还告诉我们教科书名称和版本。您是如何在许多 SO 常见问题解答中对此进行研究的?
  • 这能回答你的问题吗? Normalization in database management system
  • 在考虑发布之前,请阅读手册并在谷歌上搜索任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括和不包括您的特定名称/字符串/数字,“网站: stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。

标签: database-design database-normalization


【解决方案1】:

在您的情况下, Country_of_origin 大概是指一个国家/地区。美国是一个国家的名称。因此,数据字段包含单个项目,因此在这个词的意义上是原子的。如果不参考基础主题,您无法始终弄清楚给定字段的原子性。

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多