database-design - 如果我有多种类型的对象,何时 object.type 应该是字符串,何时应该是外键?

标签 database-design foreign-keys associations lookup-tables

假设我有一些书,可以是浪漫小说、小说或悬疑小说。我有两个现实的选择来存储这些数据。一种是在我的书籍表中有一个类型列,它是一个值为“浪漫”、“小说”或“神秘”的字符串。另一种是创建一个 book_types 表并在其中存储类型。然后我的书将有一个引用 book_types 表的 type_id 外键。

我的问题是如何选择最好的?我已经看到 Restful 身份验证 Rails 插件中使用的字符串方法,其中包含有关用户状态的信息 - 'inactive'、'active'、'pending'...

考虑到我将一直查询此信息,使用查找表方法是否会对性能造成影响?

谢谢!

最佳答案

外键方法的性能会更好。字符串比较会减慢速度。比较数字要快得多。

如果您想进一步加快查询速度,请在用于引用外键的列上添加索引。与主键不同,外键不会自动创建索引。

关于database-design - 如果我有多种类型的对象,何时 object.type 应该是字符串,何时应该是外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1005384/

相关文章:

database - Cassandra Transaction with ZooKeeper - 这行得通吗?

postgresql - 具有外键约束的关系数据库如何摄取顺序可能错误的数据?

django - 从 ForeignKey (non-self.request.user) 在 CreateView 中设置初始值

java - 理解代码中的 UML 关联

mysql 将一张表中的数据拆分为两张表并保留映射(关联)

mysql - 子类型的表关系

sql - 如果不存在如何创建序列

database - 关于数据库设计以记录系统中的用户事件的建议

Mysql,innodb - 无法创建外键

ruby-on-rails - has_many 上的自定义范围,:through association (Rails 4)