【发布时间】:2017-01-24 22:16:12
【问题描述】:
我不太清楚如何用这个词,所以我举个例子。我有一个程序可以从用户定义的 csv 文件中读取它的数据库表。 (我在 Python 中使用 SQLite。)
假设我们有桌子:
个人资料(
profile_name 文本,
分区 TEXT,
分享 真实
主键(profile_name,分区),
)
ProfileAssign (
地理 TEXT,
年 整数,
profile_name TEXT,
主键(地理、年份),
外键地理参考地理
)
我们希望每个地理区域都有相关的分区配置文件。现在假设我们还想确保用户不会将不存在的配置文件分配给地理,即我们希望在 ProfileAssign 表中有一个外键约束:
FOREIGN KEY profile_name REFERENCES profile
现在显然这不可能发生,因为 profile_name 不是 Profile 表的主键。我的解决方案是创建一个单独的表,我们可以在该表上创建外键引用:
个人资料列表(
profile_name TEXT,
主键 (profile_name)
)
这对用户来说很烦人,因为他们不仅必须定义这些配置文件,而且现在必须在单独的文件中列出所有名称。任何想法如何规避这个?
【问题讨论】:
标签: python-3.x database-design sqlite