【问题标题】:Difference between creating a new table vs keeping a field in psql创建新表与在 psql 中保留字段之间的区别
【发布时间】:2021-12-19 06:21:55
【问题描述】:

创建一个新表而不是只保留一个字段有什么区别。比如……

Book有以下字段

  • title:String
  • summary:String
  • ISBN:String
  • language:Language

Language有以下字段

  • name:String

我们不能只做language:String,而不是做language:Language。我知道我们可以做到这一点并且它会起作用,但我的问题是创建新表 Language 并在表 Book 中拥有 Foreign Key 有什么好处。

【问题讨论】:

    标签: postgresql database-design foreign-keys relationship


    【解决方案1】:

    首先,正确的术语是“列”,而不是“字段”。

    查找表的优点是:

    • 如果字符串长于几个字符,可以节省空间

    • 您会自动阻止人们插入查找表中的值以外的值,从而提高数据质量

    【讨论】:

    • 感谢指正。另外,您能否通过阻止人们插入查找表中的值以外的值来进一步解释您的意思。根本没有创建任何语言。我相信此内容是动态的,并且可以由具有授权的用户添加。我从找到的教程中得到这个here你可以ctrl-flanguage,第6次出现是你可以找到这个段落的地方。此页面上还显示了一个模型。
    • 如果language 是一个字符串,您可以使用INSERT 值,例如EnglishenglishENGLISHEN。当然,您可以通过检查约束来防止这种情况发生,但是无论何时添加或删除语言,您都需要一个 ALTER TABLE
    • 对不起,我不太明白。使用不同的表我也可以做到这一点。我可以添加EnglishENenglish 等等,它们都显示为不同的选项。这些值仍被插入。
    • 是的,但这需要您有权在查找表中插入。即使您这样做了,应用程序用户界面也可能不允许您向该查找表添加任何内容,您必须从查找表生成的下拉列表中指定语言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多