我有一个类关系图的这一部分,我想将其转换为SQL:
类图的一部分:
我的实习导师给我发来了这个SQL代码:
CREATE TABLE `users` (
`Matricule` varchar(50) NOT NULL,
`Password` varchar(50) NOT NULL,
`Role` enum('ResponsableProduction','ResponsableChaineProduction','ResponsableMaintenance','AgentMaintenance','Administrateur','Magasinier') NOT NULL
);
CREATE TABLE `responsable_production` (
`Matricule` varchar(50) NOT NULL,
`Nom` varchar(25) NOT NULL,
`Prenom` varchar(25) NOT NULL
);
CREATE TABLE `responsable_maintenance` (
`Matricule` varchar(50) NOT NULL,
`Nom` varchar(25) NOT NULL,
`Prenom` varchar(25) NOT NULL,
`RefChaine` varchar(50) NOT NULL
);
CREATE TABLE `responsable_chaine_production` (
`Matricule` varchar(50) NOT NULL,
`Nom` varchar(25) NOT NULL,
`Prenom` varchar(25) NOT NULL,
`RefChaine` varchar(50) NOT NULL
);
CREATE TABLE `magasinier` (
`Matricule` varchar(50) NOT NULL,
`Nom` varchar(25) NOT NULL,
`Prenom` varchar(25) NOT NULL
);
CREATE TABLE `agent_maintenance` (
`Matricule` varchar(50) NOT NULL,
`Nom` varchar(25) NOT NULL,
`Prenom` varchar(25) NOT NULL,
`Specialite` varchar(50) NOT NULL,
`Age` int(11) NOT NULL,
`Sexe` enum('Homme','Femme','','') NOT NULL,
`NiveauEducation` varchar(50) NOT NULL,
`ExperienceProfessionnelle` int(11) NOT NULL
);
-- Triggers `users`
--
DELIMITER $$
CREATE TRIGGER `User_Insert` AFTER INSERT ON `users` FOR EACH ROW BEGIN
IF (NEW.Role = "ResponsableMaintenance") THEN
insert into responsable_maintenance(matricule) VALUES (NEW.matricule);
ELSEIF (NEW.Role = "ResponsableChaineProduction") THEN
insert into responsable_chaine_production(matricule) VALUES (NEW.matricule);
ELSEIF (NEW.Role = "AgentMaintenance") THEN
insert into agent_maintenance(matricule) VALUES (NEW.matricule);
ELSEIF (NEW.Role = "ResponsableProduction") THEN
insert into responsable_production(matricule) VALUES (NEW.matricule);
ELSEIF (NEW.Role = "Magasinier") THEN
insert into magasinier(matricule) VALUES (NEW.matricule);
End IF;
END
$$
DELIMITER ;
但对我来说,这似乎不太对.因为,例如,如果我要添加一个新用户,首先必须将其添加到用户表中,然后根据其角色将其剩余的详细信息添加到另一个表中.这对我来说似乎很麻烦,而且以后可能会出现不一致的问题. 这个SQL脚本与类图一致吗?(在添加了所需的PK和FK约束后). 如果是,有没有比我的主管发给我的设计更简单/更安全的数据库设计?