Próbuję zbudować bazę danych i tabele dlamój system. Ale znalazłem, że jeśli nie dodaję klucza obcego w kodach, nie ma błędu. "Użyłem wielu metod, aby kod zadziałał, ale nadal jest błąd.
Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255)
);
Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,
FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),
FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);
Odpowiedzi:
1 dla odpowiedzi № 1W twoim kluczu zagranicznym jest literówka:
FOREIGN KEY (users_password) REFERENCES users_details_one(users_spassword)
powinno być FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
i potrzebujesz również indeksów users_email
i users_password
w tabeli users_details_one
, tak jak to:
Create table if not exists users_details_one
(
fname varchar(255),
lname varchar(255),
address varchar(255),
users_email varchar(255),
users_password varchar(255),
department varchar(255),
index (users_email),
index (users_password)
);
Create table if not exists users_one
(
users_email varchar(255),
users_password varchar(255) ,
FOREIGN KEY (users_email) REFERENCES users_details_one(users_email),
FOREIGN KEY (users_password) REFERENCES users_details_one(users_password)
);
Indeks nie musi być unikalny.
MySQL wymaga indeksów dla kluczy obcych iprzywoływane klucze tak, że Klucze obcego klucza mogą być szybkie i nie wymagają skanowania tabeli. w tabela odwołań, musi istnieć indeks, w którym klucz obcy kolumny są wyświetlane jako pierwsze kolumny w tej samej kolejności. Taki Indeks jest tworzony automatycznie w tabeli odniesienia, jeśli nie jest istnieć.
0 dla odpowiedzi nr 2
Jeśli chcesz utworzyć kolumnę jako klucz obcy,te kolumny muszą być kluczami podstawowymi aur muszą mieć ograniczenie wyjątkowości, tzn. w twoim przypadku hasło user_email i hasła_użytkownika user_details_one musi być unikalne lub klucze podstawowe.