Cómo usar claves foráneas con PHP

Así que entiendo cómo crear claves externas y sé cuál es el propósito del FK. Pero tengo un problema para entender cómo usarlos. Le hice una pregunta con respecto a las claves foráneas.AQUÍ (Haga clic en el enlace)

Aquí está lo que hice:

CREATE TABLE user(
  id INT(11) NOT NULL AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(20) NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE items(
  i_id INT(11) NOT NULL AUTO_INCREMENT,
  name TINYTEXT NOT NULL,
  price DECIMAL(8,2) NOT NULL,
  PRIMARY KEY (i_id)
);

CREATE TABLE user_purchase(
  i_id INT(11) NOT NULL,
  name TINYTEXT NOT NULL,
  id INT(11) NOT NULL,
  FOREIGN KEY (i_id) REFERENCES items(i_id),
  FOREIGN KEY (name) REFERENCES items(name),
  FOREIGN KEY (id) REFERENCES user(id)
);

Ahora mi pregunta es ¿cómo sacar el máximo provecho de esto usando PHP? En el enlace anterior, las personas han sugerido que es bueno usar solo una clave externa en la tabla user_purchase, pero ¿qué sucede si deseo varias columnas? ¿Por qué no usamos varias claves externas para diferentes columnas de la misma tabla?

Estoy usando mysql y php. Le agradecería si pudiera mostrar algunos ejemplos de cómo usa PHP con las tablas que tienen claves externas para obtener información mediante los comandos MYSQL. Realmente necesito una explicación minuciosa.

También necesito entender los términos Normalización y Desnormalización. Apreciaría si pudiera dar algunos enlaces que expliquen estos términos en gran detalle con ejemplos o si tiene alguna sugerencia para algunos libros geniales para principiantes en diseño de bases de datos, implementación, etc., realmente lo apreciaría.

Muchas gracias.

Respuestas a la pregunta(5)

Su respuesta a la pregunta