【发布时间】:2018-10-03 13:08:41
【问题描述】:
作为个人项目的一部分,我构建了一个数据库,其中包含一个文本文件表(以它们的路径和基本名称作为列)和另一个表,该表指示哪些文件是其他文件的副本。
这是第一个表格的外观:
files(
filesid INTEGER PRIMARY KEY UNIQUE,
filename TEXT,
filesource TEXT,
path TEXT UNIQUE)
这是第二个:
duplicatefiles(
id INTEGER PRIMARY KEY UNIQUE,
filesid INTEGER,
duplicateof INTEGER,
songid INTEGER,
FOREIGN KEY(filesid) REFERENCES lyricsfiles(filesid),
FOREIGN KEY(duplicateof) REFERENCES lyricsfiles(filesid),
最后一张表有两列外键引用files表中的id,表示这两个文件是重复的。
我这样做是为了最大程度地减少信息重复,但我现在意识到我不知道如何查询此表以获得我真正想要的内容,即两个文件的路径。 我已经阅读了有关别名的信息,但在这种情况下我无法找到有关如何使用它们的文档。
我正在使用 sqlite3 和 python3。
所以我的问题是:查询数据库以获得所需信息的正确方法是什么?在数据库中表示这些信息的更好方法是什么?
【问题讨论】:
-
为什么不直接在原始表中添加一列(例如:parent_filesid)而不是两个表?重复文件的文件 ID 会有所不同吗?
-
我对 TSQL 比较熟悉(也许 sqlite3 也是如此),但你不能只使用
JOIN语句吗?
标签: sql python-3.x sqlite