- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 CMS 应用程序允许用户发布分类、文章、事件、目录、属性等,其数据库设计如下:
每个部分(即“分类”、“事件”等)都有三个表专门用于存储与其相关的数据:
分类:
事件:
这同样适用于文章、属性、目录
等。每个部分都有三个专门用于其帖子、类别的表格。
这种方法的问题是:
comments, ratings, images
属于 classified-post
, events-posts
等,所以结构的表将是:[id, post_id, section]
必须存储和关联第二个 FK 部分,以避免重复发布。这种方法将有单个帖子表,该表具有与每个帖子关联的 section 列作为外键。即
post: id, section, title 等
....VALUES ( 1, 'classifieds','abc') (2, 'events' ,'asd')
虽然第二种方法在执行 sql 查询时有点麻烦,但在执行关系表查询时简化了过程。 ex: table images, ratings, comments 属于 posts 表。
图片 [ id, post_id (FK) ]
虽然这种方法看起来简洁明了,但最终会在 posts 表中包含大量列,其中包含与事件、分类、目录等相关的列,这将在查询行和列时导致性能问题。
这同样适用于类别。它可以是两种方法中的一种,要么将 section 列保存为第二个外键,要么为每个部分设置单独的表(第一种方法)。
那么现在我的问题是,哪种方法被认为比另一种更好?这两种方法中的任何一种在性能方面都优于另一种方法吗?或者在处理这些范例时最好的解决方法是什么?
最佳答案
考虑到一些因素,我会赞成第二种方法。
一个标准的数据库设计指南是设计者应该首先创建一个 fully normalized dsign然后选择性denormalization可以出于性能原因执行。
规范化是组织关系数据库的字段和表以最小化冗余和依赖性的过程.
反规范化是尝试通过添加冗余数据或对数据进行分组来优化数据库读取性能的过程。
提示: 构建第一个数据库的程序员通常主要关注性能。毫无疑问,性能很重要。糟糕的设计很容易导致数据库操作花费十到一百倍的时间。
可以看到一个很可能的例子here
遵循上述方法的草案模型可以是:
关于mysql - 加强数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292070/
从 iOS 9 及更高版本开始,出于安全目的,Apple 强制用户向特定主机发出 HTTPS 请求,或者如果必须发出 HTTP 请求,Apple 希望用户在 plist 中提供相同的信息。 类似于:
我想知道,除了使用 format compact 之外,是否还有一种方法可以使矩阵的显示更紧凑或更紧凑(可能是第三方包-格式化矩阵的输出?) 这是在 MATLAB 中显示的矩阵示例,格式为 compa
我有一个项目,需要在 HTTP Web 服务器上进行安全交易。我完全控制客户端(移动应用程序)并控制服务器。我想开发一个系统,客户端可以在其中添加或减去存储在服务器数据库中的值。存储的值是基于货币的,
我是一名优秀的程序员,十分优秀!