0
CREATE TABLE IF NOT EXISTS `domains` (
`domains_id` bigint(15) NOT NULL AUTO_INCREMENT,
`domains_url` varchar(255) NOT NULL,
PRIMARY KEY (`domains_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `domains_actions` (
  `domains_actions_id` int(15) NOT NULL AUTO_INCREMENT,
  `domains_actions_selmgec` int(15) NOT NULL,
  `domains_id` int(15) NOT NULL,
  `domains_actions_member` int(15) NOT NULL,
  `domains_actions_date` date NOT NULL,
  `actions_id` int(2) NOT NULL
  `domains_actions_value` int(15) NOT NULL,
  PRIMARY KEY (`domains_actions_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS `actions` (
  `actions_id` int(15) NOT NULL AUTO_INCREMENT,
  `actions_action` varchar(15) NOT NULL,
  PRIMARY KEY (`actions_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

因此,如果我已正确阅读,我需要一个用于喜欢/新/社交的操作表,然后将其链接到 domain_actions。

4

2 回答 2

3

不知道你想用这些做什么,但他们显然有重复的数据。您应该合并到一个带有type列的表中;也许使用ENUM.

CREATE TABLE IF NOT EXISTS `domains` (
  `domains_id` int(15) NOT NULL AUTO_INCREMENT,
  `domains_selmgec` int(15) NOT NULL,
  `domains_domain` int(15) NOT NULL,
  `domains_member` int(15) NOT NULL,
  `domains_date` date NOT NULL,
  `domains_type` int(2) NOT NULL,
  `type` ENUM('likes', 'new', 'social'),
  PRIMARY KEY (`domains_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

一个更加关系化和规范化的模式看起来像:

CREATE TABLE IF NOT EXISTS `domain` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
  `selmgec` int(15) NOT NULL,
  `domain` int(15) NOT NULL,
  `member` int(15) NOT NULL,
  `date` date NOT NULL,
  `type` int(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `type` (
  `id` tinyint(1) NOT NULL AUTO_INCREMENT,
  `type` varchar(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `domainType` (
  `domain_id` int(15) NOT NULL,
  `type_id` tinyint(1) NOT NULL,
  PRIMARY KEY (`domain_id`, `type_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

这种设计将允许您拥有一个域并为其分配多种类型。您需要将引擎更改为InnoDb并创建外键约束来强制执行这些类型。

查看演示

于 2013-01-22T22:17:33.190 回答
1

在不了解所有细节的情况下,我将创建一个表,然后创建一个TypeId引用另一个表的列:

CREATE TABLE IF NOT EXISTS `domains` (
  `domains_id` int(15) NOT NULL AUTO_INCREMENT,
  `domains_selmgec` int(15) NOT NULL,
  `domains_domain` int(15) NOT NULL,
  `domains_member` int(15) NOT NULL,
  `domains_date` date NOT NULL,
  `domains_type` int(2) NOT NULL,
  `type_id` int(2) NOT NULL,
  PRIMARY KEY (`domains_likes_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `types` (
  `type_id` int(15) NOT NULL AUTO_INCREMENT,
  `type_name` varchar(15) NOT NULL,
  PRIMARY KEY (`type_id`)
) ;
于 2013-01-22T22:19:33.390 回答