【发布时间】:2014-07-19 00:21:42
【问题描述】:
我一直在为一个问题苦苦挣扎。非常感谢您的帮助。
这里是:
我有两个数据结构,ObjClass 和 Obj,其中 Obj 是 ObjClass 的一个特化。一个 Obj 可能有多个“插槽”,每个插槽都有自己的类型。 一个 Obj 拥有的总 Slots 是他自己的 Slots 与他的 ObjClass 的 Slots 的并集。这是简化的架构(如果有语法错误,请耐心等待):
create table ObjClass(
ObjClassId integer not null primary key
)
create table Obj(
ObjId integer not null primary key,
ParentClass integer,
foreign key(ParentClass) references ObjClass(ObjClassId)
)
create table Slot(
SlotId integer not null primary key,
SlotType integer
)
我要问的是:Slot 表与 ObjClass 或 Obj 有 1-n 关系,但绝不会两者兼而有之。如何在 SQLite 上执行此操作?
P.S.:我猜这个问题可能是由糟糕的数据库设计引起的。对于如何以更好的设计实现类似结构的任何想法也表示赞赏。
谢谢!
【问题讨论】:
-
您对插槽的使用可能是一种反模式,EAV。
-
第一条评论:这个问题是特定于 SQLite 的,并且没有一个答案考虑到这一点(即:考虑到这里使用的技术,它们不适用)第二条评论:可能是,但这并不能回答问题。
-
第一。什么让你有那个想法?插槽=设置。第二。只是想你可能想知道。为什么还有呢?
-
第一个:我的错误。当我没有找到关于 SQLite 检查约束的文档时,我认为它不支持它们。现在我知道它确实如此,它就像一个魅力。谢谢。 2nd:猜猜我只是粗鲁。对不起。
标签: sql sqlite foreign-keys