Как создать ноль или отношения один ко многим, используя sql - PullRequest
0 голосов
/ 06 июня 2018

У меня есть модель данных , сгенерированная EntityFramework в существующем приложении, но я хочу создать те же таблицы с теми же отношениями в моей базе данных.

Мне удалось создать связь ( один к нулю или один ) между Student и StudentAddress со следующим правильным запросом:

CREATE TABLE Student(
StudentId INT NOT NULL PRIMARY KEY,
FirstName VARCHAR(30),
LastName VARCHAR(30),
City VARCHAR(30),
State1 VARCHAR(30),
StandardId INT NOT NULL FOREIGN KEY REFERENCES Standard(StandardId));

CREATE TABLE StudentAddress(
StudentId INT,
Adress1 VARCHAR(30),
Adress2 VARCHAR(30),
City VARCHAR(30),
State VARCHAR(30),
CONSTRAINT StudentAdress_PK PRIMARY KEY(StudentId),
CONSTRAINT StudentAdress_Student_FK FOREIGN KEY(StudentId) 
REFERENCES Student(StudentId));

Мой вопрос рассматривает это модель данных как создать связь ( ноль или один ко многим ) между Стандарт и Студент таблиц.

Спасибовы за вашу помощь

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы делаете это так же, как реализовали отношение «один к нулю» или «одно».

Пока у вас есть внешний ключ от StudentAddress до Student.Нет ничего обязательного для одного адреса на одного студента.(Вы можете сделать это с помощью уникального индекса для StudentAddress.StudentId.)

Так что сделайте то же самое.Имейте поле StandardId в таблице Student, и у вас будет много учеников к нулю или одно стандартное отношение.

0 голосов
/ 06 июня 2018

Вам нужна третья таблица, в которой хранятся отношения:

CREATE TABLE StandardStudenRelation (
    ID INT IDENTITY(1,1) PRIMARY KEY
    , StandardID INT NOT NULL
    , StudentID INT NOT NULL
    , CONSTRAINT Student_ID_FK FOREIGN KEY(StudentId) 
        REFERENCES Standard(StudentId)  
    , CONSTRAINT Standard_ID_FK FOREIGN KEY(StandardID) 
        REFERENCES Standard(StandardId) 
    );
...