搜索友好的方式来存储MySQL中的复选框值?

Ale*_*lex 1 database checkbox search

什么是在数据库中存储复选框值的搜索友好方式?

目前,复选框作为数组处理,值以";"分隔

因此:

<input type="checkbox" name="frequency[]" value="Daily"/> Daily
<input type="checkbox" name="frequency[]" value="Weekly"/> Weekly
<input type="checkbox" name="frequency[]" value="Monthly"/> Monthly
Run Code Online (Sandbox Code Playgroud)

PHP后端运行implode(';',$ frequency)并将字符串添加到数据库中.

这很好,但在搜索时却是一场噩梦.

有没有更好的方法来解决这个问题?

Bil*_*win 5

与关于关系数据库的许多其他问题一样,最好的答案是规范化.

多值属性需要在多行上存储值:

CREATE TABLE Frequency (
  form_id INT NOT NULL,
  frequency VARCHAR(7) NOT NULL,
  PRIMARY KEY (form_id, frequency),
  FOREIGN KEY (form_id) REFERENCES FormSubmissions(form_id),
  FOREIGN KEY (frequency) REFERENCES FrequencyValues(frequency)
);
Run Code Online (Sandbox Code Playgroud)