2012-07-22 93 views
2

可能有人建议我在正确的SQL架构对于这个问题:特别MySQL表结构

我创建了一个选项动态数量的应用程序(选项1,选项2,选项3,等...) 。我希望用户能够选择其中一个选项,然后增加与该选项关联的数字。我如何实现一个动态表,因为我显然不能预先定义4个表,例如,每个表都是一个选项。

在此先感谢。

+1

要么我不明白的问题,或者你也得太多。只有一张桌子不够用,有两列:一个用于选项名称,一个用于与其相关的号码? – JJJ 2012-07-22 21:13:19

回答

2

这听起来像你正在寻找一个表像

CREATE TABLE `options` (
    option_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 
    name VARCHAR(255), 
    occurrences INT UNSIGNED 
) ENGINE=InnoDB; 

然后,您可以运行类似的查询:(基于选择什么样的访问者option_id灌装)

UPDATE options SET occurrences = occurrences + 1 WHERE option_id = ____; 

+0

这看起来很正确,谢谢! – Apollo 2012-07-22 21:20:43

0

如果您想跟踪哪个用户选择哪些选项,您可以添加一个用户选项表,并从VoteyDeciple中删除事件计数器。

CREATE TABLE `UserOptions` (
    `uo_user` INT NOT NULL REFERENCES `users`(`user_id`), 
    `uo_option` INT NOT NULL REFERENCES `options`(`option_id`) 
); 

然后,如果你想算一笔期权的出现,你可以使用

SELECT count(*) as `occurrences` from UserOptions where uo_option={$option_id};