Ik zou het zo doen:
-- phpMyAdmin SQL Dump
-- version 3.5.2.2
-- http://www.phpmyadmin.net
--
-- Machine: 127.0.0.1
-- Genereertijd: 25 apr 2014 om 18:21
-- Serverversie: 5.5.27
-- PHP-versie: 5.4.7
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Databank: `quiz`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `antwoorden`
--
CREATE TABLE IF NOT EXISTS `antwoorden` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`vraag_id` int(11) NOT NULL,
`antwoord` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`volgorde` varchar(1) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `vraag_id` (`vraag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
--
-- Gegevens worden uitgevoerd voor tabel `antwoorden`
--
INSERT INTO `antwoorden` (`id`, `vraag_id`, `antwoord`, `volgorde`) VALUES
(1, 1, 'rood', 'a'),
(2, 1, 'groen', 'b'),
(3, 1, 'blauw', 'c'),
(4, 2, '25 km per week', 'a'),
(5, 2, '50 km per week', 'b'),
(6, 2, '75 km per week', 'c'),
(7, 2, '100 km per week', 'd');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `quizzen`
--
CREATE TABLE IF NOT EXISTS `quizzen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`titel` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
--
-- Gegevens worden uitgevoerd voor tabel `quizzen`
--
INSERT INTO `quizzen` (`id`, `titel`) VALUES
(1, 'Test Quiz');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `resultaten`
--
CREATE TABLE IF NOT EXISTS `resultaten` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`vraag_id` int(11) NOT NULL,
`antwoord_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `vraag_id` (`vraag_id`),
KEY `user_id` (`user_id`),
KEY `antwoord_id` (`antwoord_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `resultaten`
--
INSERT INTO `resultaten` (`id`, `user_id`, `vraag_id`, `antwoord_id`) VALUES
(1, 1, 1, 1),
(2, 1, 2, 5);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`naam` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
--
-- Gegevens worden uitgevoerd voor tabel `users`
--
INSERT INTO `users` (`id`, `naam`, `email`) VALUES
(1, 'Frank', '[email protected]');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `vragen`
--
CREATE TABLE IF NOT EXISTS `vragen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`quiz_id` int(11) NOT NULL,
`vraag` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`bijschrift` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `quiz_id` (`quiz_id`),
KEY `vraag_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `vragen`
--
INSERT INTO `vragen` (`id`, `quiz_id`, `vraag`, `bijschrift`) VALUES
(1, 1, 'Welke kleur heeft de auto?', NULL),
(2, 1, 'Hoeveel kilometer rijdt de auto per week?', NULL);
--
-- Beperkingen voor gedumpte tabellen
--
--
-- Beperkingen voor tabel `antwoorden`
--
ALTER TABLE `antwoorden`
ADD CONSTRAINT `antwoorden_ibfk_1` FOREIGN KEY (`vraag_id`) REFERENCES `vragen` (`id`) ON DELETE CASCADE;
--
-- Beperkingen voor tabel `resultaten`
--
ALTER TABLE `resultaten`
ADD CONSTRAINT `resultaten_ibfk_3` FOREIGN KEY (`antwoord_id`) REFERENCES `antwoorden` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `resultaten_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `resultaten_ibfk_2` FOREIGN KEY (`vraag_id`) REFERENCES `vragen` (`id`) ON DELETE CASCADE;
--
-- Beperkingen voor tabel `vragen`
--
ALTER TABLE `vragen`
ADD CONSTRAINT `vragen_ibfk_1` FOREIGN KEY (`quiz_id`) REFERENCES `quizzen` (`id`) ON DELETE CASCADE;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
dan gelijk maar de query om de vragen voor één quiz op het scherm te krijgen:
select
v.vraag, v.bijschrift, a.volgorde, a.antwoord
from
vragen v
left join
antwoorden a
on
v.id=a.vraag_id
where
v.quiz_id=1
order by
v.id, a.volgorde
en de query om de gegeven antwoorden te krijgen voor één gebruiker en één quiz:
select
v.vraag, a.volgorde, a.antwoord
from
resultaten r
left join
antwoorden a
on
r.antwoord_id=a.id
left join
vragen v
on
a.vraag_id=v.id
where
r.user_id=1 and v.quiz_id=1
order by
v.id, a.volgorde