我应该如何更改 html 表单的数据库布局以使其更具可扩展性?
How should I change the database layout of my html form to make it more scalable?
我有一个 HTML 表单,它当前将结果发送到数据库。这些问题被硬编码到 html 页面,我正在努力使表单更具可扩展性、动态性和灵活性。
有人建议我对问题、选择和提交的答案设置不同的 table。我在 Excel 中草拟了一个布局,现在我已经编写了用于创建 table 的脚本,但我仍然面临 question_choiceX
列的问题。如果有人需要提出一个有 36 个可能答案的问题怎么办?还是 100?这些可能是罕见的情况,但我承认我在创建数据库时不能忽略它们,否则我可能 运行 以后会遇到大问题。
由于 SQL 没有数组,我一直在苦苦思索,我已经意识到一种可能的解决方案,但我不确定这是否是一个好的做法,而且它也不完美:
- 将
question_choiceX
列变成一个 question_choices
列,这是一个 FOREIGN KEY
引用另一个 table 专用于所有可能选择的列问题。我认为这不是最佳选择,因为那样我可能会得到大量的 table。如果我之后需要为问题添加更多答案选择,这也无济于事。
这些是many-to-many关系。
有 table 个问题。 (每个问题一行)。
有 table 个答案。 (每个答案一行)。 (您只需要一个 table 个答案,而不是每个问题一个)。
在它们之间架起一座桥梁 table,将答案与它们所针对的问题联系起来。
有 table 位用户或 table 次尝试回答问题。
在它和答案之间架起一座桥梁table。
Bridge tables 通常有两个外键,一个在它们正在桥接的 tables 上。您可以将这两个外键用作桥 table 本身的复合主键。
我有一个 HTML 表单,它当前将结果发送到数据库。这些问题被硬编码到 html 页面,我正在努力使表单更具可扩展性、动态性和灵活性。
有人建议我对问题、选择和提交的答案设置不同的 table。我在 Excel 中草拟了一个布局,现在我已经编写了用于创建 table 的脚本,但我仍然面临 question_choiceX
列的问题。如果有人需要提出一个有 36 个可能答案的问题怎么办?还是 100?这些可能是罕见的情况,但我承认我在创建数据库时不能忽略它们,否则我可能 运行 以后会遇到大问题。
由于 SQL 没有数组,我一直在苦苦思索,我已经意识到一种可能的解决方案,但我不确定这是否是一个好的做法,而且它也不完美:
- 将
question_choiceX
列变成一个question_choices
列,这是一个FOREIGN KEY
引用另一个 table 专用于所有可能选择的列问题。我认为这不是最佳选择,因为那样我可能会得到大量的 table。如果我之后需要为问题添加更多答案选择,这也无济于事。
这些是many-to-many关系。
有 table 个问题。 (每个问题一行)。
有 table 个答案。 (每个答案一行)。 (您只需要一个 table 个答案,而不是每个问题一个)。
在它们之间架起一座桥梁 table,将答案与它们所针对的问题联系起来。
有 table 位用户或 table 次尝试回答问题。
在它和答案之间架起一座桥梁table。
Bridge tables 通常有两个外键,一个在它们正在桥接的 tables 上。您可以将这两个外键用作桥 table 本身的复合主键。