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 ;
因此,如果我已正确阅读,我需要一个针对所喜欢/新/社交的动作表,然后将其链接到domains_actions。
答案 0 :(得分: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
并创建外键约束以强制执行这些类型。
答案 1 :(得分: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`)
) ;