我设计数据库以包含一个表reference
,类型与列type
即几个预定义值(例如,book
,movie
,magazine
,等)中的一个。我打算随着时间的推移扩大可能的价值范围(例如,如果我意识到我错过了academic_paper
类型,我希望能够将其纳入)。SQL数据库设计:存储行
最简单的解决方案似乎只是将表示类型的字符串存储到表中。但这听起来像会造成很多浪费空间。
我想到的另一个解决方案是创建一个新表reference_types
,其中type
列在其外键引用。这似乎有额外的好处,确保有效的外键(以便我不会意外错误地在我的代码中的某处“杂志”),可能允许更快的查询某种类型的所有媒体(因为整数比较应该是多比字符串比较更快),但也会减慢我的应用程序,因为每当我需要引用类型时都需要连接,并且由于这些额外的连接可能会使逻辑复杂化。
你对这个问题的模式设计有什么想法?