Я разделил таблицу служб на основе данных, которые я собираюсь сохранить, как показано ниже:
CREATE TABLE `app_ws_common` (
`serviceid` varchar(16) NOT NULL,
`applicationid` varchar(16) default NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
`userid` varchar(128) NOT NULL,
PRIMARY KEY (`serviceid`,`userid`),
KEY `table1_isv_fk` (`applicationid`,`userid`),
CONSTRAINT `table1_isv_fk` FOREIGN KEY (`applicationid`, `userid`) REFERENCES `applications` (`applicationid`, `userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `app_ws_user` (
`serviceid` varchar(16) NOT NULL,
`userid` varchar(128) NOT NULL,
`applicationid` varchar(16) default NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
PRIMARY KEY (`serviceid`,`userid`),
KEY `FK_app_ws_user` (`applicationid`,`userid`),
CONSTRAINT `FK_app_ws_user` FOREIGN KEY (`applicationid`, `userid`) REFERENCES `applications` (`applicationid`, `userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `applications` (
`applicationid` varchar(16) NOT NULL,
`userid` varchar(128) NOT NULL,
`applicationname` varchar(30) default NULL,
PRIMARY KEY (`applicationid`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `external_ws_common` (
`serviceid` varchar(16) NOT NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
PRIMARY KEY (`serviceid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `external_ws_user` (
`serviceid` varchar(16) NOT NULL,
`userid` varchar(128) NOT NULL,
`applicationid` varchar(16) default NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
PRIMARY KEY (`serviceid`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Здесь:
app_ws_common таблица содержит все приложениясвязанные службы, которые являются общими для всех пользователей
app_ws_user таблица содержит все связанные с приложениями службы, созданные конкретным пользователем и отредактированные из его общей версии.Таблица будет содержать список приложений и соответствующего пользователя.
external_ws_common Таблица будет содержать список служб, независимых от всех приложений и общих для всех пользователей.
external_ws_user таблица будет содержать список служб, которые не соответствуют ни одному приложению и созданы или отредактированы пользователем из «обычной» версии внешней службы.
Теперь я долженизвлечь все связанные с приложением сервисы из таблицы app_ws_user и все сервисы из таблицы app_ws_common, когда они не имеютОтредактированная версия для этого конкретного пользователя в таблице app_ws_user.
Как мне эффективно написать запрос для этого?