我在mysql中使用二进制位标志来确定一个人的角色。此人可以是faculty
,instructor
或both
。每个学院都有一个或多个独特的教师(一对多关系)。每个学院都有一名讲师。教练员可以属于一个或多个学院。表person
存储该特定个人的基本数据(姓名,电子邮件等)。为了确定我已经部分创建person_role
表的角色,但不确定使用位标志需要哪些字段或类型?
CREATE TABLE IF NOT EXISTS `academy` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(25) NOT NULL,
`academy_id` int(11) NOT NULL,
`street_address` varchar(50) NOT NULL,
`city` varchar(25) NOT NULL,
`state` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `person` (
id int(11) NOT NULL auto_increment,
`academy_id` int(11) NOT NULL,
`person_name` varchar(50) NOT NULL,
`person_email` varchar(50) default NULL,
`person_phone` varchar(15) default NULL,
PRIMARY KEY (`id`),
CONSTRAINT `academy_id` FOREIGN KEY (`academy_id`) REFERENCES `academy` (`academy_id`) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS `person_role` (
`contact` tinyint(1) NOT NULL,
`instructor` tinyint(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
答案 0 :(得分:1)
您可以在名为person_role
的{{1}}表上添加另一个位字段。那样你就能满足:
该人可以是教师,教师或两者兼而有之。
由于人与其角色之间存在“一对一”关系,因此您可以移动faculty
表上的instructor
和faculty
位字段并删除{{ 1}}表。