Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с sql

Анастасия Мишина Знаток (483), открыт 2 недели назад
эти две таблицы связаны по полю айди сотрудника. когда я вывожу таблицу сотрудники все есть,значения айдии
а когда вывожу таблицу оценка, поле айди сотрудника имеет значение нал. Почему нал? почему значение не наследуется?

CREATE TABLE Сотрудники(ID_сотрудника INT IDENTITY(1,1) PRIMARY KEY, ФИО varchar (255), должность varchar(55), отдел varchar (55), номер_телефона varchar(20), электронная_почта varchar(50)); табл сотрудники

CREATE TABLE Оценка ( ID_оценки INT IDENTITY(1,1) PRIMARY KEY,
id_сотрудника int, id_курса int ,
id_результатов int , оценка decimal,
дата_оценки date, преподаватель varchar(255),
foreign key (id_сотрудника) references Сотрудники(ID_сотрудника), foreign key (id_курса) references Курс(ID_курса)
);
1 ответ
Андрей Высший разум (427083) 2 недели назад
Потому, что когда ты заполняешь таблицу Оценка, ты не записываешь id сотрудника в поле id_сотрудника. Само по себе поле не заполнится. А внешний ключ нужен для того, чтобы ты не смог записать в Оценка.id_сотрудника значение, которого нет в Сотрудники.ID_сотрудника.
Анастасия МишинаЗнаток (483) 2 недели назад
так оно же генерируется изза идентити
Анастасия МишинаЗнаток (483) 2 недели назад
таак,а как мне сделать чтобы оно наследовалось?
Анастасия МишинаЗнаток (483) 2 недели назад
и по логике оно же должно наследоваться
Андрей Высший разум (427083) Анастасия Мишина, Никакого наследования. Откуда СУБД может знать, с каким именно сотрудником связана добавляемая оценка? Ты САМ должен прописать все значения полей, ссылающихся на другие таблицы.
Анастасия МишинаЗнаток (483) 2 недели назад
А как? Не вручную же... А если таких пользователей 100000?
Андрей Высший разум (427083) Анастасия Мишина, И что? Когда ты добавляешь оценку, ты знаешь id сотрудника, для которого добавляешь эту оценку. Данные в базу добавляются не вручную, а скриптами. Которые как раз и обеспечиваю подстановку нужных id.
Анастасия МишинаЗнаток (483) 2 недели назад
Я все поля вручную заполнила,кроме айди
Анастасия МишинаЗнаток (483) 2 недели назад
спасибооо
Похожие вопросы