RE:Eliminar una fila a partir de la clave primaria
Ante todo te insto que le pongas una llave primaria numérica a tus tablas, esto por orden y para evitar errores por registros repetidos (en mi pais que somos apenas 6 millones de personas habemos 20 Franklin Gamboa y de esos, dos que tienen mi otro apellido igual por lo que ocurrencias como esta harían que tu sistema diera errores de llave duplicada), puedes usar el número de seguro social o generar tu propio número usando un sequence de Oracle para este fin (o un Identity de MySQL ya que hasta donde se MySQL no soporte Sequences, podrías investigarlo si te interesa).
Tambien desde la perspectiva de que la llave primaria de un registro NO DEVERÍA cambiar durante el ciclo de vida de un sistema y un operario del sistema puede cometer errores al escribir el nombre o el apellido, requiriendo su posterior modificacion (escenario que puede generar problemas en el sistema si no se había previsto esto en tiempo de diseño)
En el caso que expones arriba, la sentencia delete sigue siendo sencilla, ya que lo que recibe es nombre+apellido en una variable varchar, la base de datos nada mas concatena ambos valores para sacar el hash y detectar si existen duplicados, fuera de eso para la base de datos son dos columnas aparte donde puedes leer y escribir información, entonces si yo recibo el nombre y el apellido concatenado simplemente debo concatenar las columnas de la base de datos para hacer la comparación.
delete from persona where nombre || apellido = 'franklingamboa'
En caso que el sistema reciba las columnas como dos parámetros aparte, simplemente debes validarlas por aparte.
delete from persona where nombre = 'franklin' and apellido = 'gamboa'
Y si al final decidieras crear un nuevo campo que fuera la identidad (Llave Primaria) de esta tabla, sería un delete comparando por ese campo nada mas.
Espero haberte ayudado.
Saludos,
Franklin Gamboa M.