投票テーブルに 5 つの MySQL データ フィールドがあります。
- 投稿ID
- 投票ID
- 投票ID
- 有権者
- 投票した
アンケートに投票したり、投稿に投票したりできます。投票で投票すると、投稿/人物フィールドは null になります。投稿に投票すると、投票フィールドは null になります。
投稿IDまたは投票IDのいずれかをnullにできるようにテーブルを設定したいのですが、両方はできません。phpmyadmin を使用してデータベースを管理しています。
何か案は?
投票テーブルに 5 つの MySQL データ フィールドがあります。
アンケートに投票したり、投稿に投票したりできます。投票で投票すると、投稿/人物フィールドは null になります。投稿に投票すると、投票フィールドは null になります。
投稿IDまたは投票IDのいずれかをnullにできるようにテーブルを設定したいのですが、両方はできません。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;
投票と投票がある場合、多対多の関係がある場合の説明があります。つまり、1人の投票者が複数の投票に投票でき、1つの投票者が複数の投票者を持つことができます。投票テーブルと投票テーブルをブリッジするには、ブリッジ テーブルを使用します。このテーブルには、すべての投票数と投票の組み合わせが含まれています。したがって、特定の投票に誰が投票したかを知りたい場合は、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 です。これは、列のペアではなく、列にのみ適用できます。
ここでの解決策は、2 つの別個のテーブルを作成することです。1 つは投稿票用で、もう 1 つは投票用です。次に、関連するフィールドを各テーブルに配置できます。これにより、スペースも節約され、データのエラーが発生しにくくなります。