多對多表結構設計
阿新 • • 發佈:2019-01-24
在完成角色管理是,首先我們有一個角色表,其次要有一個選單表。他們之間是多對多的關係,即一個角色對應多條選單,同時一條選單可以對應多個角色。
1. 角色表
CREATE TABLE `js` (
`jsid` int(11) NOT NULL auto_increment,
`jsmc` varchar(20) default NULL,
PRIMARY KEY (`jsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
2. 選單資訊表
CREATE TABLE `cdxx` (
`cdxxid` int(11) NOT NULL auto_increment,
`cdxxmc` varchar(40) default NULL,
PRIMARY KEY (`cdxxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
為了實現表之間多對多的關係,必須將一個多對多的關係通過一箇中間表分為兩個一對多的關係。因此引入第三張表,角色關係表。
CREATE TABLE `jsgx` (
`jsgxid` int(11) NOT NULL auto_increment,
`jsid` int(11) default NULL,
`cdxxid` int(11) default NULL,
`access` int(11) default NULL,
PRIMARY KEY (`jsgxid`),
KEY `jsid` (`jsid`),
KEY `cdxxid` (`cdxxid`),
CONSTRAINT `jsgx_ibfk_1` FOREIGN KEY (`jsid`) REFERENCES `js` (`jsid`),
CONSTRAINT `jsgx_ibfk_2` FOREIGN KEY (`cdxxid`) REFERENCES `cdxx` (`cdxxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
1. 角色表
CREATE TABLE `js` (
`jsid` int(11) NOT NULL auto_increment,
`jsmc` varchar(20) default NULL,
PRIMARY KEY (`jsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
2. 選單資訊表
CREATE TABLE `cdxx` (
`cdxxid` int(11) NOT NULL auto_increment,
`cdxxmc` varchar(40) default NULL,
PRIMARY KEY (`cdxxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
為了實現表之間多對多的關係,必須將一個多對多的關係通過一箇中間表分為兩個一對多的關係。因此引入第三張表,角色關係表。
CREATE TABLE `jsgx` (
`jsgxid` int(11) NOT NULL auto_increment,
`jsid` int(11) default NULL,
`cdxxid` int(11) default NULL,
`access` int(11) default NULL,
PRIMARY KEY (`jsgxid`),
KEY `jsid` (`jsid`),
KEY `cdxxid` (`cdxxid`),
CONSTRAINT `jsgx_ibfk_1` FOREIGN KEY (`jsid`) REFERENCES `js` (`jsid`),
CONSTRAINT `jsgx_ibfk_2` FOREIGN KEY (`cdxxid`) REFERENCES `cdxx` (`cdxxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;