如何组织这个MySQL数据库?

时间:2017-04-08 00:41:45

标签: mysql sql

我正在制作我的第一个使用MySQL的项目。为此,我需要组织以下值 - 电子邮件,主题,问题,答案
这是一张图片,展示了我的想法 enter image description here

基本上,通过电子邮件地址识别的每个用户都会提供与给定主题列表相关的问题和答案。我不确定如何以规范化的方式组织它。

作为MySQL的新手,我认为最好首先询问更有经验的人。关于如何组织这个的任何想法,以及一般组织MySQL数据库的任何提示?

3 个答案:

答案 0 :(得分:0)

然而,那张照片看起来不错......

如果我正确阅读了您的项目限制,您只能使用一组离散的可用主题?如果是这种情况,单独的可用主题表可能会很好。

所以它可以像一张桌子一样简单,但我个人可能会考虑两个(主题的第二个)只是为了避免人们提交相同主题的多个/小变体(例如数学和数学)。

如果你想获得幻想,也许可以考虑发布基本相同问题的类似变体的含义。假设,如果数据库是用于常见问题解答应用程序,当某人正在起草一个与已经收到回复的另一个问题非常相似的问题时,您可能希望在提交新问题之前将该人重定向到该问题。

答案 1 :(得分: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
";

答案 2 :(得分:0)

这是您的首选设计:

enter image description here

每个用户每questionsubject都有Subject个,

并且每个user都可以有多个questions s&#39; Syntax Error: Token '<' not a primary expression at column 1 of the expression [<div>I think happiness is key to everything</div>] starting at [<div>I think happiness is key to everything</div>]. html -------------------- <p dynamic="<div>I think happiness is key to everything</div>"></p> directive --------------------- app.directive('dynamic', function($compile){ return function(scope, element, attrs) { scope.$watch( function(scope) { return scope.$eval(attrs.dynamic); }, function(value) { element.html(value); $compile(element.contents())(scope); } ); }; });

在每个表格中,您可以添加所需的剩余数据