创建新表与在 psql 中保留字段之间的区别
Posted
技术标签:
【中文标题】创建新表与在 psql 中保留字段之间的区别【英文标题】:Difference between creating a new table vs keeping a field in 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
有什么好处。
【问题讨论】:
【参考方案1】:首先,正确的术语是“列”,而不是“字段”。
查找表的优点是:
如果字符串长于几个字符,可以节省空间
您会自动阻止人们插入查找表中的值以外的值,从而提高数据质量
【讨论】:
感谢指正。另外,您能否通过阻止人们插入查找表中的值以外的值来进一步解释您的意思。根本没有创建任何语言。我相信此内容是动态的,并且可以由具有授权的用户添加。我从找到的教程中得到这个here你可以ctrl-f
为language
,第6次出现是你可以找到这个段落的地方。此页面上还显示了一个模型。
如果language
是一个字符串,您可以使用INSERT
值,例如English
、english
、ENGLISH
或EN
。当然,您可以通过检查约束来防止这种情况发生,但是无论何时添加或删除语言,您都需要一个 ALTER TABLE
。
对不起,我不太明白。使用不同的表我也可以做到这一点。我可以添加English
、EN
和english
等等,它们都显示为不同的选项。这些值仍被插入。
是的,但这需要您有权在查找表中插入。即使您这样做了,应用程序用户界面也可能不允许您向该查找表添加任何内容,您必须从查找表生成的下拉列表中指定语言。以上是关于创建新表与在 psql 中保留字段之间的区别的主要内容,如果未能解决你的问题,请参考以下文章