只是一个快速的数据库设计问题:你是否总是在每张表中使用ID字段,或者只是大部分?显然,您的大多数表都会受益,但是您是否曾经有过可能不想使用ID字段的表格?
例如,我想添加向另一个表(foo)中的对象添加标签的功能.所以我有一个带有varchar字段的表FooTag来保存标记,还有一个fooID字段来引用foo中的行.我真的需要围绕一个基本上任意的ID字段创建聚簇索引吗?使用fooID和我的文本字段作为聚集索引会不会更有效率,因为我几乎总是会通过fooID进行搜索?另外,使用聚集索引中的文本可以保持数据的排序,使我在查询数据时更容易排序.缺点是插入需要更长时间,但不会被选择期间的增益所抵消,这种情况会更频繁地发生?
您对ID字段有何看法?可弯曲的规则,还是坚不可摧的法律?
编辑:我知道提供的示例未规范化.如果标记是项目的主要部分,标记了多个表,以及其他"附加",那么双表解决方案将是一个明确的答案.但是在这个最简单的情况下,归一化是否值得?它会节省一些空间,但在运行查询时需要额外的连接
正如编程的大部分内容:规则,而不是法律.
异常证明:某些双列表仅用于形成其他更有意义的表之间的关系.