2017-04-08 1 views
0

MySQL을 사용하는 첫 번째 프로젝트를 만들고 있습니다. 이렇게하려면, 나는 다음과 같은 values- 이메일, 주제, 질문을 구성 할 필요가
여기 enter image description here이 MySQL 데이터베이스는 어떻게 구성합니까?

은 기본적으로 전자 메일 주소에 의해 식별 된 각 사용자가 만든다 내가 생각했던 것을 보여주는 이미지와 답변 질문과 주어진 과목 목록에 관한 답변. 나는 정규화 될 수있는 방법으로 그것을 체계화하는 방법을 확신하지 못한다.

MySQL에 익숙하지 않으므로 더 많은 경험이있는 사람들에게 먼저 질문하는 것이 더 좋을 것이라고 생각했습니다. 이 방법을 구성하는 방법에 대한 아이디어와 일반적으로 MySQL 데이터베이스를 구성하는 데 필요한 팁이 있습니까?

+0

을 원하는 많은있다. 그러나 각 과목마다 하나 이상의 질문이있을 것이며 각 질문에는 하나 이상의 대답이있을 것이라고 생각하십시오. –

+0

엔티티 (클래스) 간의 관계와 다중도를 알아야합니다. 실제로 매우 광범위한 주제, 튜토리얼 읽기, 링크 된 테이블과 속성으로 데이터베이스 스키마 작성 및 새로운 질문을하십시오. –

답변

0

그 이미지는 내가 프로젝트 제약을 읽으면

올바르게 사용 가능한 주제의 이산 세트로 제한됩니다 ...하지만, 나에게 좋아 보인다? 그렇다면 사용 가능한 과목에 대한 별도의 표가 아마도 좋을 것입니다.

마치 한 테이블만큼 간단 할 수도 있지만 개인적으로 동일한 주제 (예 : 수학 및 수학)의 여러 변형/작은 변형을 제출하는 사람들을 피하기 위해 개인적으로 2 개 (주제 2 번째)를 고려할 수 있습니다.

멋진 생각을 갖고 싶다면 어쩌면 비슷한 질문이 게시 될 때 비슷한 의미의 영향에 대해 생각해보십시오. 가설 적으로 데이터베이스가 FAQ 응용 프로그램 용이었던 경우 누군가 이미 응답을받은 다른 질문과 유사한 질문을 초안으로 작성하는 경우 새 질문을 제출하기 전에 그 사람을 해당 질문으로 리디렉션 할 수 있습니다.

0

이것은 내가 생각할 수있는 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 
"; 
+0

개발 도중 데이터베이스를 빠르게 덮어 쓸 수 있도록 테이블 생성 전에 "DROP TABLE"을 배치합니다. 'phpmyadmin'에 익숙해지면 좋습니다. –

+0

감사합니다! 코드를 사용해 보았는데 잘 작동했습니다. 그러나, 질문의 이미지를 어떤 방법으로 코드로 변환 할 것인지 (정확하게 주어진 값을 사용) https://i.stack.imgur.com/Xa1Xe.png를 알면 도움이 될 것입니다. – IDK

+0

죄송합니다. 나는 이미지를 보지 못했다. Sry. 다른 테이블을 추가하여 질문을 범주로 정렬하고 질문에 Key 값을 추가하여 범주에 넣습니다. –

0

의 모양은 다음과 같습니다

enter image description here

각 사용자 수있는 모든 많은 question들있다 subject,

A 차 각 Subject 캔은 남아있는 데이터를 추가 할 수 있습니다 각 테이블에서 questions

user의 '당신이 정말 광범위한 질문이다

관련 문제