【问题标题】:How to use Bit flags in mysql如何在 mysql 中使用位标志
【发布时间】:2013-11-15 06:30:05
【问题描述】:

我在 mysql 中使用二进制位标志来确定一个人的角色。该人可以是facultyinstructorboth。每个学院都有一个或多个独特的教员(一对多关系)。此外,每个学院都有一名讲师。讲师可以属于一个或多个学院。表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;

【问题讨论】:

    标签: mysql bitflags


    【解决方案1】:

    您可以在person_role 表上添加另一个位字段,称为faculty。这样你就可以满足:

    此人可以是教师、讲师或两者兼而有之。

    由于人员与其角色之间存在“一对一”关系,您可以移动person 表上的instructorfaculty 位字段并删除person_role 表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多