SQL SERVER relacja 1 do 1

SQL SERVER relacja 1 do 1
0

Chce stworzyć relacje 1:1 pomiędzy tabelami Student, Address:
Po wygenerowaniu diagramu pokazuję mi dwie relacje między tymi tabelami 1:1 i 1:N. Dlaczego tak?
Nie da się by była to jedynie relacja 1:1 ?

Kopiuj
Create Student
(
  StudentID int not null identity(1,1) PRIMARY KEY,
  Name varchar(20),
  SurName varchar(20),
  AddressID int
)

Create Address
(
  AddressID int not null identity(1,1) PRIMARY KEY,
  HouseNumber varchar(20),
  Street varcuar(20)
)

alter table Student
add constraint FK_Student_Address foreign key (StudentID)
references Address(AddressID)
ekhart
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:ekhart.pl
  • Postów:140
0

Jakbyś chciał 1:1 to musiałbyś dać StudentID do tabeli Address

Kopiuj
Create Address
(
  AddressID int not null identity(1,1) PRIMARY KEY,
  HouseNumber varchar(20),
  Street varcuar(20)
  StudentID int
)

PA
Ale to będzie 1:N
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 11 godzin
  • Postów:3873
2

Tak naprawdę to, żeby to było 1:1 to w tabeli Address, PK AddressID , powinien być również Foregin key z tabeli student czyli AdressID = studentID:

Kopiuj
alter table Address
add constraint FK_Student_Address foreign key (AddressID)
references Student(StudentID)

Tym samym addressID nie może być identity:

Kopiuj
Create table  Address
(
  AddressID int not null  PRIMARY KEY,
  HouseNumber varchar(20),
  Street varchar(20)
)

Sensu w tym osobiście nie widze, bo skoro masz jeden adres to po co go trzymać w innej tablei, ale w przeciwnym razie dodanie studentID i dodanie kolumny studentID i na niej zrobienie FK będzie 1:N

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.