normalizzare il database
come?
mi potresti consigliare come impostare il tipo di campo e come prelevare i dati che saranno sicuramente multi 
È più un'arte che una scienza, nel senso che non c'è una procedura o "algoritmo" specifico da seguire, però ci sono molte indicazioni e esempi anche nella pagina dedicata su Wikipedia. Inoltre per capire come normalizzare bisogna conoscere esattamente il significato di cosa si sta inserendo nella base di dati (su questo qualcosa dal codice credo di averlo capito).
Se non erro ogni attore ha una lista di "performer_aka", ciascun elemento di questa lista ha un nome (es. Alexisback) e, opzionalmente, una fonte (es. imdb, google).
È chiaro che la relazione tra l'attore e i "performer_aka" sia di tipo uno a molti (ogni attore può avere più "performer_aka"), che in ambito SQL viene generalmente reso creando una tabella separata "performer_aka", che mantenga un riferimento all'attore. Poiché le informazioni rilevanti sono il nome (obbligatorio, mi pare) e la fonte (opzionale, mi pare), questa tabella potrebbe avere 3 colonne così strutturate:
Codice:
CREATE TABLE perfomer_aka(
actor_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
source VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY(actor_id, name, source),
CONSTRAINT FK_actor_performer FOREIGN KEY (actor_id)
REFERENCES actor(id)
);
CREATE INDEX IDX_performer_aka ON performer_aka(actor_id);
La primary key utilizzata comprende tutti e tre i campi: non possono esistere due record identici, possono però esistere due record relativi allo stesso attore, con lo stesso nome, ma fonte diversa. L'indice, creato nell'ultima riga, serve e rendere più efficienti le letture per attore, che verosimilmente saranno l'operazione più frequente su questa tabella.
Dato l'id di un attore è abbastanza semplice recuperare la sua lista di "performer_aka":
Codice:
SELECT name, source FROM performer_aka WHERE actor_id = 42
Se hai invece bisogno di recuperare l'informazione per tutti gli attori, puoi ricorrere a una JOIN
Codice:
SELECT actor.id AS actor_id, actor.name AS actor_name, performer_aka.name AS performer_aka_name, performer_aka.source AS performer_aka_source
FROM actor JOIN performer_aka ON actor.id = performer_aka.actor_id
i risultati saranno nella forma
Codice:
actor_id | actor_name | performer_aka_name | performer_aka_source
1 | nome | Alexisback | imdb
1 | nome | Alex back | google
1 | nome | Al | NULL
3 | nome2 | XXX | google
che potrai poi scandire e raggruppare, per esempio in un vettore:
Codice PHP:
$actors = [];
while ($row = ...) {
$actors[$row['actor_id']]['name'] = $row['actor_name'];
$actors[$row['actor_id']]['performer_aka'][] = [
'name' => $row['performer_aka_name'],
'source' => $row['performer_aka_source']
];
}
che alla fine avrà questa forma:
Codice:
$actors = [
'1' => [
'name' => 'nome',
'performer_aka' => [
['name' => 'Alexisback', source => 'imdb'],
['name' => 'Alex back', source => 'google'],
['name' => 'Al', source => null],
]
],
'2' => [
'name' => 'nome2',
'performer_aka' => [
['name' => 'XXX', source => 'google']
]
]
]
Quando mostrerai i dati, quindi, non avrai più problemi. Per esempio:
Codice PHP:
foreach ($actors as $actor) {
echo $actor['name'];
echo "<ul>";
foreach ($actor['performer_aka'] as $performer_aka) {
echo "<li>" . $performer_aka['name'] . "</li>";
}
echo "</ul>";
}
Se vuoi mostrare anche la fonte basta sostituire con:
Codice PHP:
if (!is_null($performer_aka['source'])) {
echo "<li>" . $performer_aka['name'] . "(" . $performer_aka['source'] . ")</li>";
}
else {
echo "<li>" . $performer_aka['name'] . "</li>";
}
E c'è di più, se in futuro volessi aggiungere delle informazioni, per esempio un link alla fonte, potresti semplicemente aggiungere una colonna source_link a performer_aka senza che questo intacchi il resto del codice (cosa non possibile col formato che usi attualmente), oppure potresti voler inserire informazioni sul tipo di fonte, per esempio una descrizione di cosa sono imdb e google. In questo caso dovresti creare una tabella source con le colonne name, description dove name è la chiave primaria, e può essere consultata in JOIN con performer_aka come
Codice:
SELECT * from performer_aka JOIN source ON performer_aka.source = source.name;
in questo caso useresti delle chiavi naturali, puoi anche passare alle chiavi surrogate se preferisci.