이것은 내가 생각할 수있는 MySQL에서 가장 간단한 방법입니다.
DROP TABLE IF EXISTS `_user`;
CREATE TABLE `_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) DEFAULT NULL,
`password` varchar(40) DEFAULT NULL,
`first_name` varchar(32) DEFAULT NULL,
`last_name` varchar(32) DEFAULT NULL,
`email_address` varchar(50) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `questions`;
CREATE TABLE IF NOT EXISTS `questions` (
`question_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`subject_id` int(11) DEFAULT NULL,
`question` varchar(200) DEFAULT NULL,
PRIMARY KEY (`question_id`),
KEY `user_id` (`user_id`),
KEY `subject_id` (`subject_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
DROP TABLE IF EXISTS `answers`;
CREATE TABLE IF NOT EXISTS `answers`(
`answer_id` int(11) NOT NULL AUTO_INCREMENT,
`question_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`answer` varchar(200) DEFAULT NULL,
PRIMARY KEY (`answer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
DROP TABLE IF EXISTS `subjects`;
CREATE TABLE IF NOT EXISTS `subject` (
`subject_id` int(11) NOT NULL AUTO_INCREMENT,
`subject` varchar(200) DEFAULT NULL,
PRIMARY KEY (`subject_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
쿼리이 당신을 위해 경우 선호하는 디자인이 항아리
$query = "SELECT
questions.question,
answers.answer,
subjects.subject,
_user.email_address
FROM questions
INNER JOIN answers
ON answers.question_id = questions.question_id
LEFT JOIN subjects
ON subjects.subject_id = questions.subject_id
LEFT JOIN _user
ON _user.user_id = questions.user_id
";
을 원하는 많은있다. 그러나 각 과목마다 하나 이상의 질문이있을 것이며 각 질문에는 하나 이상의 대답이있을 것이라고 생각하십시오. –
엔티티 (클래스) 간의 관계와 다중도를 알아야합니다. 실제로 매우 광범위한 주제, 튜토리얼 읽기, 링크 된 테이블과 속성으로 데이터베이스 스키마 작성 및 새로운 질문을하십시오. –