Witam,
Mam takie dwie tabele:
CREATE TABLE IF NOT EXISTS `children` (
`P_Id` int(11) NOT NULL,
`parent_id` int(255) NOT NULL,
`FirstName` varchar(255) DEFAULT NULL,
`Address` varchar(255) DEFAULT NULL,
`City` varchar(255) DEFAULT NULL
) ENGINE=Innodb DEFAULT CHARSET=utf8;
INSERT INTO `children` (`P_Id`, `parent_id`, `FirstName`, `Address`, `City`) VALUES
(1, 23, '23', '23', '23');
CREATE TABLE IF NOT EXISTS `parent` (
`P_Id` int(11) NOT NULL,
`LastName` varchar(255) NOT NULL,
`FirstName` varchar(255) DEFAULT NULL,
`Address` varchar(255) DEFAULT NULL,
`City` varchar(255) DEFAULT NULL
) ENGINE=Innodb DEFAULT CHARSET=utf8;
INSERT INTO `parent` (`P_Id`, `LastName`, `FirstName`, `Address`, `City`) VALUES
(1, 'Test', 'Test', 'Test', 'Test');
ALTER TABLE `children`
ADD PRIMARY KEY (`P_Id`), ADD KEY `fk_test` (`parent_id`);
ALTER TABLE `parent`
ADD PRIMARY KEY (`P_Id`,`LastName`);
W tabeli parent, kolumny P_Id
oraz LastName
mają klucze główne, ponieważ chce zrobić te dwie kolumny unikalne.
Teraz chcę dodać do tabeli children klucz obcy do kolumny parent
. Jak mogę to zrobić? Mam dodać P_Id
jako klucz obcy do children?
Czy mam stworzyć PK jak tak:
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
Z dokumentacji wynika, że tabela Persons ma jeden klucz główy, który nazywa sie pk_PersonID. To teraz do tego klucza mam się odwoła z tabeli children?
a poźniej stworzyć klucz obcy:
ALTER TABLE children
ADD FOREIGN KEY (paren_id)
REFERENCES pk_PersonID(PersonID )
Jak działa wiele kluczy podstawowych w tej samej tabeli? Po co są ? czy m się różnią od metody unique()
?