CREATE TABLE MATRICULAS2 (
NRC_MATRI INTEGER NOT NULL,
ESTUDIANTE INTEGER NOT NULL,
PRIMARY KEY(NRC_MATRI,ESTUDIANTE),
FOREIGN KEY ESTUDIANTE REFERENCES PERSONAS (CEDULA),
FOREIGN KEY NRC_MATRI REFERENCES CURSOS (NRC)
);
Wenas! =)
Necesito crear una tabla que tiene dos claves principales que a la vez son foraneas.
Toy usando este codigo:
Código:CREATE TABLE MATRICULAS2 ( NRC_MATRI INTEGER NOT NULL, ESTUDIANTE INTEGER NOT NULL, PRIMARY KEY(NRC_MATRI,ESTUDIANTE), FOREIGN KEY ESTUDIANTE REFERENCES PERSONAS (CEDULA), FOREIGN KEY NRC_MATRI REFERENCES CURSOS (NRC) );
Pero marca error en la linea cinco, supongo que para que sean primarias y foraneas al tiempo hay que hacer algo diferente.
Thx por la ayuda >D
BTW: Las claves que se estan poniendo como foraneas ya son primarias en sus respectivas tablas asi que ese no es el error, el error que marca es el 104.
Varias cosas:
Google + Nomenclatura de objetos
Debería acostumbrarse a ponerle nombres a los constraints
CONSTRAINT FK_TABLAREFERENCIA_TABLALOCAL FOREIGN KEY (TABLAREFERENCIA _COLUMNA) REFERENCES TABLAREFERENCIA(COLUMA),
CONSTRAINT PK_COMPUTADOR PRIMARY KEY (COLUMNA1,COLUMNA2,COLUMNA3)
Acuérdese de los paréntesis.
Uno puede tener mas de 1 clave primaria (mas de 1 identificador)
Muchas gracias por las respuestas a los dos.
Aclaro, ahi no se estan definiendo dos claves primarias, estoy definiendo una clave primaria compuesta que asi fue como lei que se hacia.
El punto es que tiene que tener una clave primaria compuesta, y las otras dos como foraneas. Todo eso al mismo tiempo.
El error si quito las ultimas dos lineas, donde se definen las foraneas, no lo marca. Solo lo marca cuando defino esa clave primaria compuesta y las foraneas al tiempo, asi que si saben a que se debe el error o como se debe hacer eso se los agradecere.
Suerte!! =)
BTW: No entendi los de los constraint, eso no me lo han mencionado xD
PRIMARY KEY(NRC_MATRI,ESTUDIANTE),
aunque si lo necesitas todo juntoCREATE TABLE matriculas2 (
nrc_matri INT NOT NULL,
estudiante INT NOT NULL);
ALTER TABLE matriculas2 ADD PRIMARY KEY (nrc_matri, estudiante);
ALTER TABLE matriculas2
ADD CONSTRAINT matriculas2_personas FOREIGN KEY (estudiante) REFERENCES personas (cedula);
ALTER TABLE matriculas2
ADD CONSTRAINT matriculas2_cursos FOREIGN KEY (nrc_matri) REFERENCES cursos (nrc);
solo te faltaban los parentesis del foreign keyCREATE TABLE MATRICULAS2 (
NRC_MATRI INTEGER NOT NULL,
ESTUDIANTE INTEGER NOT NULL,
PRIMARY KEY(NRC_MATRI,ESTUDIANTE),
FOREIGN KEY (ESTUDIANTE) REFERENCES PERSONAS (CEDULA),
FOREIGN KEY (NRC_MATRI) REFERENCES CURSOS (NRC)
);
a mi me gusta todo por separado
aunque si lo necesitas todo junto
solo te faltaban los parentesis del foreign key
create table epe..clases(
clase_id int primary key,
clase_nomb integer references alumnos(alumn_id),
)
bueeeeno, me doy, les cuento que una cosa es administrar una base de datos y otra es hacer una jejeje.
resulta que estoy trabajando sobre Microsoft SQL 2005, y pues tengo las siguientes tablas:
alumnos:
alumn_id clave primaria identidad(1,1) no nulable,
alumn_nom nvarchar(50),
alumn_telefono nvarchar(20)
profesores:
profe_id clave primaria identidad(1,1) no nulable,
profe_nombre nvarchar(50),
profe_telefono nvarchar(10)
clases:
clase_id clave primaria identidad(1,1) no nulable,
clase_nomb integer references alumnos(alumn_id)
y pues voy y lleno de nombres la tabla "alumnos" y se supone que deben aparecer los codigos de los alumnos en la tabla "clase", pero no aparece nada :-S, ¿que estoy haciendo mal?
la consulta que estoy haciendo es la siguiente:
Código:create table epe..clases( clase_id int primary key, clase_nomb integer references alumnos(alumn_id), )
y bueno, la siguiente pregunta seria, ya resolviendo la primera, ¿como hago para, que en la tabla "clases" a partir del codigo del estudiante me aparezca el nombre del estudiante? ¿eso ya seria de la parte de programacion del software?
Estoy programando en C# como dato, se les agradece infinitamente señores LANeros.
Deberías revisar que tablas necesitas y que información necesitas almacenar referente a cada clase, alumno, profesor.
Si vas a tener a mas de un alumno por clase una opción seria tener una tabla que relacione que un alumno esta inscrito en una clase.
bueno, la idea es aprender a hacer tablas con datos relacionados, digamos que no fuera asi el ejemplo, sino que fueran medicos, usuarios y citas medicas, entonces como los datos de usuarios y medicos se relacionan en la tabla "Citas", ¿como crearia yo esa tabla citas de manera que cuando yo haga un "select* from citas" me aparezcan los datos relacionados?
jejejeje muy cierto!
freeeeescos freeeeescos que yo se, ahora la pregunta es, ¿que funcion cumple el "constraint"?? porque constraint pk_tal o fk_tal??? pa que eso?
jejeje, muchisimas gracias por la colaboracion, de verdad me ayudan un resto!!!