Базы данных

Правильные кортежи


Первая строка является результатом объединения записи о работнике и карточки учета рабочего времени для номера работника 145-09-0967. Однако в третьей строке запись о работнике приведена для работника с номером 145-09-0967, а карточка учета рабочего времени — для работника с номером 376- 77-0099. Если использовать эту таблицу для создания платежных ведомостей, то одному работнику заплатят за время, отработанное другим работником! Также компания может заплатить несколько раз за одну и ту же работу, поскольку первая и четвертая строки созданы с одной и той же карточкой учета рабочего времени.

Более содержательным является умножение, производящее кортежи, объединяя кортеж из отношения Employee с кортежем из отношения TimeCard, имеющим тот же номер работника, т.е. изо всех возможных комбинаций работников и карточек учета рабочего времени в результат войдут только те, которые содержат информацию о работнике и карточку учета времени того же работника. Можно представить это как результат выборки кортежей, где Employee, ssn равен TimeCard, ssn. Если определенный сотрудник работал определенное время, мы получим в результате кортеж со всей информацией об этом сотруднике (номер социального страхования, фамилия и имя) и всей информацией о карточке учета рабочего времени (номер социального страхования, дата, время начала и время окончания).

Это умножение задается как выборка тех строк произведения, поля ssn которых совпадают, или в алгебраическом представлении:

Lmployee.ssn-TimeCard ssn oyt-jt-j х TimeCard)

Такой тип умножения называется соединением (join), а приведенное выше выражение является соединением отношений Employee и TimeCard по ssn. Оно помещает вместе связанные объекты из двух отношений. Фактически оно часто используется для объединения объектов, между которыми существуют связи, определенные в модели данных, использовавшейся при создании базы данных. В том случае, когда два отношения соединяются по атрибутам, имеющим одно и то же имя, соединение записывается в следующем виде:

Комментарии закрыты