类别的单列表
回答
我想补充一个代理键2个主要原因:
- 使用代理键将使您的加入对整数工作,而然后在字符串,这是更有效的
- 使用代理键意志使您能够重命名类别,而不必遍历与该类别相关的所有行并更改它们。我知道大多数现代数据库都允许更新级联,但即使您不需要手动完成更新,也需要在数据库方面进行更多的工作。
当然,您还必须在类别名称上保留一个唯一索引,并将其标记为非空值,否则最终可能会有2个相同类别名称的ID或一个类别名称为ID的ID一片空白。
原因2对我来说足够好。 – Strawberry
在阅读a_horse_with_no_name对其他答案的评论后编辑了我的答案。当然,我应该自己想想。 –
从逻辑上讲,如果您想在录制帖子之前预先定义类别,则使用名称作为关键字的单列表格没有问题。如果类别不能存在没有帖子,你甚至不需要这个单列表。
实际上,名称不如代理键稳定。除非您期望大数据集,否则您的数据库管理系统不支持ON UPDATE CASCADE,或者您设计数据库效果不佳,这并不是什么问题。如果您的类别名称很长,并且您期望数据量庞大,那么记录大小,索引大小和联接性能可能会成为问题。另一方面,使用类别名称直接否定联接(使用类别表获取名称)。您根据What are the design criteria for primary keys?
中指定的其他标准选择关键分数以得出结论,单列表格对您指定的要求很合适。
使用代理键的总指数大小实际上会更高。代理键的一个索引和类别名称上的另一个(唯一)索引。 –
对于类别表,是的,但对于相关表格较小。 – reaanb
- 1. 类别列表与列表类别
- 2. Magento的类别列表订单
- 3. 类别和子类别单下拉列表中为 - MVC剃刀
- 4. Wordpress类别列表
- 5. 类别和子类别下拉表单
- 6. mysql类别和子类别列表
- 7. 类别描述到类别列表页
- 8. 两个列表类别和子类别
- 9. Wordpress类别列表2列
- 10. 建立类别 - 从MySQL表中的子类别的HTML列表
- 11. Highcharts 3.0 beta中的单类别列表图表
- 12. 获取wordpres中顶级菜单的类别和子类别列表
- 13. Etsy按类别列出的API列表
- 14. Magento顶级类别列表
- 15. 在类别列表组件
- 16. 饲料类别列表
- 17. 选择与类别列表
- 18. 返回类别列表nopCommerce
- 19. DropDownListFor使用类别列表
- 20. 使用类别列表
- 21. Magento类别列表为空
- 22. 页面和类别列表
- 23. 添加到类别列表
- 24. 简化列表到类别
- 25. Magento Rest-Api类别列表
- 26. SQLite和PHP列表类别
- 27. Swing(Java)类别列表
- 28. Jquery验证 - 类别列表
- 29. 列表自定义类别
- 30. A到Z类别列表
也许你可以有CategoryID(** INT **)_AI_ _PK_,CategoryName(** varchar **)_not null_,这样你就可以使用CategoryID来引用文章中的类别..使用内部或左边加入 –
我想到了这一点。但我的想法是,我只是为了添加它而添加一个id。 CategoryName是一个完美的候选关键,因为它的独特性。并在那里它可能是一个主键 –
有一个ID将是高效率和灵活的情况下,你想即兴..例如突然一个月后,你觉得需要添加父a和子类别..所以只需添加一列该表将完成工作.....所以完整的表看起来像..类别ID(** INT **)_AI_ _PK_,类别名称(** varchar **)_不空,ParentID(** int **) ..你可以用这个建立一个树形视图..当处理数据库时,单独有一个ID字段总是可以帮助@morten –