mysql - 调查应用程序的关系数据库架构

标签 mysql database cakephp database-design

我正在学习 CakePHP,我已经完成了教程并开始掌握这些概念。不过,我已经取得了进展,现在正在尝试设计一个调查风格的应用程序,以了解有关相关表和关联实体的更多信息。

我一开始就认为这将是一个相当简单的项目,可以促进我的学习,但我认为我低估了数据库的复杂性,因此我询问是否有人有构建数据库的最佳方法的示例。

我的最终目标是:

  • 该应用将包含客户。
  • 该应用将包含问题。
  • 一个客户可以进行多项调查。
  • 调查可以包含许多问题。
  • 一项调查可以包含多个答案(每个答案都与调查中的一个问题相关联) 调查)。

我已经从下面的架构开始,但我不确定这是否是最优化或最合适的设计。有人对提议的架构有什么想法吗?我很想听到一些反馈或建议。

Proposed database schema

最佳答案

我相信您的架构可能会稍微简单一些。 questions_surveys 链接表似乎有点多余,除非您计划在多个调查中重复使用同一问题。除此之外,您满足您列出的要求。答案和调查之间的链接可以省略,因为您可以通过问题实体将答案链接回调查,但是为了方便起见,使用 survey_id 字段也没有什么坏处。

下一步是在 Cake 中设置所有模型关系,其形式为:

  • 客户有很多调查
  • 调查属于客户
  • 调查hasMany问题(或hasAndBelongsToMany,具体取决于是否重复使用问题)
  • 问题属于调查
  • 问题有一个答案
  • 回答belongsTo问题

关于mysql - 调查应用程序的关系数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51684573/

相关文章:

ruby-on-rails - Ruby on Rails - Postgres : Array value must start with "{" or dimension information

mysql - 视频和图像数据的缓存 - Couchbase

mysql - 插入字段时它不会自动生成 ID cakephp3

php - cakephp 将数据库字段中的输入数据匹配到文本框

mysql - Kendo grid 没有显示正确的时间

MYSQL 查询优化 - 如何从连接的右表中获取唯一列

database - 大多数表中的相同字段

mysql - 在mysql语句中回显?

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

javascript - Cakephp 2.4 JSHelper 确认使用 Dialog 而不是 Javascript 确认