J'essaye de faire une base de données relationnelle d'objet d'un système d'inscription scolaire dans Oracle 11g, mon code sql est ci-dessous. J'essaie d'écrire une requête qui donne le nom du cours et les étudiants inscrits à ce cours. mais quand j'essaye d'ajouter un autre cours de chimie, avec l'id 101. j'obtiens une erreur. C'est parce que j'ai fait coursID une clé primaire, donc je ne peux pas insérer plusieurs cours avec ce cours ID? Donc, quelqu'un peut-il me montrer comment je peux créer plusieurs instructions d'insertion de chimie avec le même identifiant, mais un identifiant d'étudiant différent?Clés primaires de base de données relationnelles d'objet
CREATE TYPE Student_objtyp AS OBJECT (
FName VARCHAR2(20),
LName VARCHAR2(20),
StudentID NUMBER
);
/
CREATE TABLE Student_objtab OF Student_objtyp (StudentID PRIMARY KEY)
OBJECT IDENTIFIER IS PRIMARY KEY;
CREATE TYPE Course_objtyp AS OBJECT (
CourseName VARCHAR(20),
CourseID NUMBER,
StudentID REF Student_objtyp
);
/
CREATE TABLE Course_objtab OF Course_objtyp (
PRIMARY KEY (CourseID),
FOREIGN KEY (StudentID) REFERENCES Student_objtab)
OBJECT IDENTIFIER IS PRIMARY KEY;
INSERT INTO Student_objtab VALUES('bill','smitts',1);
INSERT INTO Student_objtab VALUES('bob','jo',2);
INSERT INTO Course_objtab
SELECT 'Chemistry',101,
REF(S)
FROM Student_objtab S
WHERE S.StudentID = 1;
INSERT INTO Course_objtab
SELECT 'Chemistry',101,
REF(S)
FROM Student_objtab S
WHERE S.StudentID = 2;
INSERT INTO Course_objtab
SELECT 'Physics',201,
REF(S)
FROM Student_objtab S
WHERE S.StudentID = 1;
select c.CourseName, c.StudentID
from Course_objtab c;