Здравствуйте,
Недавно я уже задавал вопрос насчет БД на этом ресурсе, и получил хорошие ответы. Собственно настал второй раз :)
Сразу скажу что UML диаграмму делал не я, она попала ко мне в таком виде,
нужно реализовать базу(mysql) на ее основе, дело в том что либо в ней есть серьезные ошибки либо я просто не могу ее верно понять.
1. Не могу понять каким образом будет определятся принадлежность пользователя к группе(в таблице user должно быть еще одно поле...)
2. Таблица Port(не могу понять почему ее автор сделал красным цветом), помоем в ней нахватает тоже поля с id
Имеет смысл объединить некоторые таблицы? Так как синтаксис запросов мне кажется будет не совсем легкий.
Если у кого то хватит сил мне помочь, буду безумно благодарен.
Автор сказал что будут использованы 'OPEN API'(может это только для меня непонятно) у меня по этому запросу находит Swagger с которым я немного работал и если я верно понял его суть то он служит для так сказать наглядного взаимодействия (запросы посредством web интерфейса) и документирования работы с REST контроллером. Но какое он отношение имеет к БАЗАМ данных я сижу и не могу понять.
Задача:
В проект который реализован в java framework 'SpringBoot' и с использованием hibernate и класса реализующего CRUD который называется:
import org.springframework.data.repository.CrudRepository;
реализовать данную БД.
Задача:
В проект который реализован в java framework 'SpringBoot' и с использованием hibernate и класса реализующего CRUD который называется:
import org.springframework.data.repository.CrudRepository;
реализовать данную БД.
Если я верно понял принцип hibernate то мне не придется вообще создавать данную базу. Просто требуется объявить в моем приложении классы сущности такие как (port, host cve итд) и уже ИСПОЛЬЗУЯ аннотации предоставленные HIBERNATE связывать эти таблицы, и дальше уже используя функционал CrudRepository(класс реализующий CRUD) Создавать/Читать и. т. д из базы(пишу так как понимаю на данном этапе)
Единственное и самое важное что я пытаюсь и не могу понять это как будут реализована данная база? В моем понимании КЛАСС = ТАБЛИЦА, Или я могу ложить в базу НЕ указывая ТАБЛИЦУ, три сущности HOST, PORT, CVE и уже HIBERNATE будет создавать дополнительные таблицы? Ключи, связи между ними?
Заранее благодарю всех!
Вот что у меня пока получилось на данный момент:
Повторюсь что я не уверен что сам начинаю разбираться в БД и не уверен что верно понял суть этой UML диаграммы.
CREATE TABLE `Right` (
`Id_right` int(12) NOT NULL AUTO_INCREMENT,
`Descr_Right` varchar(32) NOT NULL,
PRIMARY KEY (`id_right`)
);
CREATE TABLE `Group` (
`Id_group` int(12) NOT NULL AUTO_INCREMENT,
`Decsr_Group` varchar(32) NOT NULL,
PRIMARY KEY (`id_group`)
);
CREATE TABLE `Group_Right` (
`Id_right` integer NOT NULL,
`Id_group` integer NOT NULL,
PRIMARY KEY (`Id_right`, `Id_group`),
FOREIGN KEY (`Id_right`) REFERENCES `Right`,
FOREIGN KEY (`Id_group`) REFERENCES `Group`
);
CREATE TABLE `Group_User` (
`Id_group` integer NOT NULL,
`Id_user` integer NOT NULL,
PRIMARY KEY (`Id_group`, `Id_user`),
FOREIGN KEY (`Id_group`) REFERENCES Group,
FOREIGN KEY (`Id_user`) REFERENCES User
);
CREATE TABLE `User_Job` (
`Id_user` integer NOT NULL,
`Id_job` integer NOT NULL,
PRIMARY KEY (`Id_user`, `Id_job`),
FOREIGN KEY (`Id_user`) REFERENCES `User`,
FOREIGN KEY (`Id_job`) REFERENCES `Job`
);
CREATE TABLE `User_Log_Host` (
`Id_user` integer NOT NULL,
`Id_job` integer NOT NULL,
`Id_host` integer NOT NULL,
PRIMARY KEY (`Id_user`, `Id_job`, `Id_host`),
FOREIGN KEY (`Id_user`) REFERENCES `User`,
FOREIGN KEY (`Id_job`) REFERENCES `Job`,
FOREIGN KEY (`Id_host`) REFERENCES `Host`
);
CREATE TABLE `Host_Port` (
`Id_host` integer NOT NULL,
`Id_port` integer NOT NULL,
PRIMARY KEY (`Id_host`, `Id_port`),
FOREIGN KEY (`Id_host`) REFERENCES `Host`,
FOREIGN KEY (`Id_port`) REFERENCES `Port`
);
CREATE TABLE `Cve_Port` (
`Id_cve` integer NOT NULL,
`Id_port` integer NOT NULL,
PRIMARY KEY (`Id_cve`, `Id_port`),
FOREIGN KEY (`Id_cve`) REFERENCES `Cve`,
FOREIGN KEY (`Id_port`) REFERENCES `Port`
);
CREATE TABLE `User` (
`Id_user` int(12) NOT NULL AUTO_INCREMENT,
`User` varchar(32) NOT NULL,
`Pass` varchar(32) NOT NULL,
PRIMARY KEY (`id_user`)
);
CREATE TABLE `Log` (
`Id_log` int(12) NOT NULL AUTO_INCREMENT,
`Nom_log` varchar(32) NOT NULL,
PRIMARY KEY (`id_log`)
);
CREATE TABLE `Job` (
`Id_job` int(12) NOT NULL AUTO_INCREMENT,
`Job_name` varchar(32) NOT NULL,
PRIMARY KEY (`id_job`)
);
CREATE TABLE `Host` (
`Id_host` int(12) NOT NULL AUTO_INCREMENT,
`Name` varchar(32) NOT NULL,
`Os_info` varchar(32) NOT NULL,
PRIMARY KEY (`id_host`)
);
CREATE TABLE `Port` (
`Id_port` int(12) NOT NULL AUTO_INCREMENT,
`Service_p` varchar(32) NOT NULL,
`Service_v` varchar(32) NOT NULL,
PRIMARY KEY (`id_port`)
);
CREATE TABLE `Cve` (
`Id_cve` int(12) NOT NULL AUTO_INCREMENT,
`Service_c` varchar(32) NOT NULL,
`Descr_c` varchar(32) NOT NULL,
PRIMARY KEY (`Id_cve`)
);