Как вставить связанные части данных в две таблицы?
У меня есть таблица сотрудников с
empID(name, address and dateOfBirth)
Position(positionID, positionName)
empPosition(empID, positionID, datePositionChanged, INDEX(empID), INDEX(positionID))
Я вставил в таблицу сотрудников как:
INSERT INTO `mario`.`employee`
(`empID`, `fName`, `lName`, `address`, `postCode`, `dateOfBirth`)
VALUES
(NULL, 'Paul', 'Roberts', '221 heaventown street', '1994-12-01');
и в таблице позиций как:
INSERT INTO `mario`.`position`
(`positionID`, `positionName`, `datePositionChanged`)
VALUES
(NULL, 'Manager', '2013-12-01');
Очевидно, что нет никаких отношений между Полом и менеджером. Любые предложения о том, как мне его вставить?
(Я очень новый студент; просто учусь на MySQL).
2 ответа
Если ваша таблица позиций будет похожа на основную таблицу для всех возможных позиций, назначьте идентификатор позиции для каждой строки и таблицы empPosition, вы можете иметь отображение между сотрудником и позицией.
ВСТАВИТЬ В mario
,position
(positionID
, positionName
, datePositionChanged
) ЦЕННОСТИ (1, "Менеджер", "2013-12-01");
ВСТАВИТЬ В mario
,employee
(empID
, fName
, lName
, address
, postCode
, dateOfBirth
) ЗНАЧЕНИЯ (1, "Пол", "Робертс", "221 райская улица", "1994-12-01");
ВСТАВИТЬ В mario
.empPosition'
('empID', 'positionID') значения (1,1);
Кажется, у Table Position должен быть первичный ключ, например, PositionId. Затем он вставляется в empPosition. Другими словами, empPosition - это своего рода справочная таблица, которая ссылается на первичные ключи EmployeeId и PositionId. Эта таблица может быть запрошена для получения позиции по employeeId и т. Д.