Je préfère largement la méthode Django, du coup

Tu écris des classes (qui doivent hériter de models.Model) dont les attributs seront les colonnes des tables.
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0, min_value=0)
Là, on fait deux tables, dont la seconde aura une référence à la première. Tu n'as rien de plus à faire (et surtout pas à créer les tables, Django s'en charge pour toi via une commande), il n'y a aucune ambiguïté et c'est utilisable immédiatement quelque soit le moteur SQL choisi. Ça permet également d'avoir pas mal de garanties sur les données (genre le nombre de votes ne sera jamais négatif), générer plusieurs colonnes avec un seul champ, …
source