我遇到一些困难,无法为我的问题找到合适的头衔。
我正在尝试学习一些关于SQLite和数据库的知识,我想出了一些练习(我知道,对于这个特殊情况,制作多个表没有多大意义,它只是用于锻炼和寻找'怎么做')。 该数据库应该包含几个表:主要的“电影表”,“年份表”,“导演表”和“类别表”。 Picture for easier understanding.
创建表后,我想用元组元组填充它们。我对“小”表没有问题,比如填充导向表。
Dir = ((0, ‘Blip’), (1, ‘Blop’), (2, ‘Blap’))
然后:
with con:
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS Directors")
cur.execute("CREATE TABLE Directors(Id INT PRIMARY KEY, Director TEXT)")
cur.executemany("INSERT INTO Directors VALUES(?, ?, ?)", Dir)
主电影表中出现问题。如何为每部电影传递众多类别值?我应该将这个值集合作为另一个元组传递吗?
Movies = ((‘Dog’, 0, 0, 1), (‘Cat’, 0, 0, (1, 2)),
(‘Ant’, 1, 1, (0, 2)), (‘Crow’, 2, 2, (0, 1, 2)))
答案 0 :(得分:1)
你需要另一张桌子。这是一种多对多的关系,因此需要一个带有外键的电影和类别的直通表。然后你可以为每对(电影,类别)插入一行:so:
Dog, 1
Cat, 1
Cat, 2
Ant, 0
Ant, 2
etc.
(另外,最好为每个表创建一个主键:对于电影,您可能希望使用自动增量整数字段而不是标题。)