【发布时间】:2012-03-28 16:55:20
【问题描述】:
我正在用 Python 为一个简单的数据库编写一个简单的接口。该数据库是一个简单的数据库,它存储在哪个事件和哪个艺术家播放了哪些特定曲目。 Python 中的接口还不是问题,尽管数据库的设计是问题。我想出了以下几点:
--- EVENTS ---
CREATE TABLE events (
id INTEGER PRIMARY KEY autoincrement,
event_name TEXT NOT NULL,
event_date TEXT NOT NULL,
<list of tracklist-ids - foreign key?>
);
--- TRACKLISTS ---
CREATE TABLE tracklists (
id INTEGER PRIMARY KEY autoincrement,
artist TEXT NOT NULL,
<list of track-ids - foreign key?>
);
--- TRACKS ---
CREATE TABLE tracks (
id INTEGER PRIMARY KEY autoincrement,
trackartist TEXT NOT NULL,
trackname TEXT NOT NULL,
timesplayed INTEGER NOT NULL,
);
我觉得这不合逻辑,我需要通过许多操作来从数据库中获取一些简单的东西,几个例子:
获取艺术家 A 在 2006 年至 2009 年间播放的歌曲(曲目)列表:需要循环遍历“tracklists”表以获取艺术家 A 的每个 tracklistid,然后在“事件”中查找' 表(这已经很痛苦了,如何存储列表?)
查找大多数时间播放曲目 A 的艺术家:循环遍历整个 'tracklists' 表并获取某种计数器来查找曲目 A 的 trackid
这可能会变得有点混乱,因为我在谈论很多不同的事情,但对我来说,我的数据库似乎可以设计得更好,还是我应该使用某种其他方法来处理这个程序数据库?我正在寻找一个基本的开始或提示/技巧,以使这个数据库更加高效和更好。我知道并非每次查找都可以很快,但对我来说这似乎不是很有效。另外,有没有更好的方法将列表存储到 SQL 数据库中,而无需将它们存储到字符串中?
【问题讨论】:
标签: python database sqlite database-design