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)并将字符串添加到数据库中.
这很好,但在搜索时却是一场噩梦.
有没有更好的方法来解决这个问题?
与关于关系数据库的许多其他问题一样,最好的答案是规范化.
多值属性需要在多行上存储值:
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)