我有 5 个 MySQL 数据字段用于投票表:
- 帖子编号
- 投票编号
- 投票编号
- 选民
- 投票人
您可以在投票中投票或为帖子投票。如果您在投票中投票,则 post/person 字段将为空。如果您为帖子投票,则投票字段将为空。
我想设置表格,以便您将帖子 ID 或投票 ID 设为空,但不能同时设置两者。我正在使用 phpmyadmin 来管理我的数据库。
有任何想法吗?
我有 5 个 MySQL 数据字段用于投票表:
您可以在投票中投票或为帖子投票。如果您在投票中投票,则 post/person 字段将为空。如果您为帖子投票,则投票字段将为空。
我想设置表格,以便您将帖子 ID 或投票 ID 设为空,但不能同时设置两者。我正在使用 phpmyadmin 来管理我的数据库。
有任何想法吗?
我必须同意上面的 jmilloy 最好的办法是创建单独的表。这是一个如何工作的例子:
表结构和样本数据:
CREATE TABLE post (
post_id INT AUTO_INCREMENT PRIMARY KEY,
vote_id INT
);
CREATE TABLE poll (
poll_id INT AUTO_INCREMENT PRIMARY KEY,
vote_id INT
);
CREATE TABLE voter(
vote_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30)
);
INSERT INTO post (vote_id) VALUES(1),(2),(3),(6);
INSERT INTO poll (vote_id) VALUES(3),(5),(4),(7);
INSERT INTO voter(name) VALUES ('bob'),
('Jack'),
('Joe'),
('Shara'),
('Hillary'),
('Steven'),
('Sandra');
要检索为帖子投票的选民,您必须使用 JOIN。这是一个示例,如果您想为帖子编号 2 找到选民,这将是什么样子。
SELECT post.post_id, vote.name
FROM (post
JOIN post_vote
ON post_vote.post_id = post.post_id)
JOIN vote
ON vote.vote_id = post_vote.vote_id
WHERE post.post_id = 2;
一些解释,如果你有一个投票和投票,你有一个多对多的关系,即一个选民可以投票给多个投票,一个投票可以有多个选民。要在投票表和民意调查表之间架桥,您可以使用桥接表。此表包含所有投票号码和投票组合。因此,当您想知道谁为特定民意调查投票时,您需要将 poll_id 与 poll_vote 表中的 poll_id 链接起来。然后使用 poll_vote 表和投票表中的 vote_id 将结果与投票表进行匹配。希望这可以帮助。祝你的项目好运。
查看 MySQL CREATE TABLE 语法http://dev.mysql.com/doc/refman/5.1/en/create-table.html
请注意,NOT NULL 或 NULL 是列定义的一部分。默认值为 NULL。这只能应用于列,而不是列对。
这里的解决方案是制作两张单独的表格,一张用于投票,一张用于投票。然后您可以将相关字段放在每个表中。这也将节省您的空间,并使您的数据不易出错。