Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: C4iN en 19 Junio 2012, 00:04 am



Título: algo básico de sqlserver
Publicado por: C4iN en 19 Junio 2012, 00:04 am
estoy aprendiendo sql server de a poco por mi cuenta, estoy trabado con unas dudas, es que cuando creo unas tablas necesito relacionarlas y no estoi seguro de como hacer las relaciones. se que debo usar la palabra references pero no se en que tabla o en que parte puedo poner el codigo de la relacion.

si tengo la tabla "personas" y la tabla "juegos". pongo los campos de cada una

create table PERSONAS
(
num_persona int primary key not null,
nombre char(50) not null,
)

go

create table JUEGOS
(
num_juego int primary key not null,
nombre char(50) not null,
)

luego de eso voy a crear una tabla auxiliar para obtener el juego relacionado a cada persona, porque una persona puede tener un solo juego en este caso.

create table JUEGOXPEROSNA
(
num_persona int primary key not null,
num_juego int primary key not null,
)

tengo mas tablas pero no puedo avanzar ya que necesito relacionar "personas" con "juegos" quiero hacerlo mediante codigo pero no se como hacerlo en este caso. solo se que debo usar references de un campo en una tabla a el mismo campo en otra, pero no se ni donde pongo la referencia ni como hacerlo exactamente. agradeceria si me pueden dar 1 mano. gracias a todos





Título: Re: algo básico de sqlserver
Publicado por: SCU en 19 Junio 2012, 01:56 am
Mira a ver si te sirven estos ejemplos:
http://sql.1keydata.com/es/sql-clave-externa.php (http://sql.1keydata.com/es/sql-clave-externa.php)

Saludos,


Título: Re: algo básico de sqlserver
Publicado por: C4iN en 19 Junio 2012, 22:52 pm
ah muchas gracias por esa informacion, pero segun observe en esas dos tablas hay una clave foranea. pero en mi ejemplo no, en el ejemplo que mostre seria algo asi
(http://i46.tinypic.com/s1hlhi.png)

las claves primarias estan marcadas con un cuadrado. mi pregunta es si cuando hago la relacion deberia hacerlo de esta forma?

Código:
create table PERSONAS
(
num_persona int primary key not null,
nombre char(50) not null,
)

go

create table JUEGOS
(
num_juego int primary key not null,
nombre char(50) not null,
)

go

asi

Citar
create table JUEGOXPEROSNA
(
num_persona int primary key not null,
num_juego int primary key not null,

num_persona REFERENCES PERSONAS(num_persona),
num_juego REFERENCES JUEGOS(num_juego)
)


o asi

Citar
create table JUEGOXPEROSNA
(
num_persona int primary key not null,
num_juego int primary key not null,

constraint FK_JXP1 foreign key (num_persona) REFERENCES PERSONAS(num_persona),
constraint FK_JXP2 foreign key (num_juego) REFERENCES JUEGOS(num_juego)
)