相关疑难解决方法(0)

SQLAlchemy中复杂的外键约束

我有两张桌子,SystemVariablesVariableOptions.SystemVariables应该是不言自明的,并VariableOptions包含所有变量的所有可能选择.

VariableOptions有一个外键,variable_id它指出哪个变量是一个选项.SystemVariables有一个外键,choice_id它指出哪个选项是当前选择的选项.

我已经利用use_alteron choice_idpost_updateon SystemVariables' choice关系绕过了循环关系.但是,我想添加一个额外的数据库约束,以确保它choice_id是有效的(即它指的是一个引用它的选项).

假设sysVar代表SystemVariables表中的一行,我需要的逻辑基本上是:

VariableOptions[sysVar.choice_id].variable_id == sysVar.id
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用SQL,声明式或任何其他方法构造这种约束.如果有必要,我可以在应用程序级别验证这一点,但如果可能的话,我想在数据库级别进行验证.我正在使用Postgres 9.1.

这可能吗?

python sql postgresql database-design sqlalchemy

9
推荐指数
1
解决办法
3252
查看次数

一对多关系中的特征值,哪个表应该保持这个?

说我有一对多关系,其中有两个表,一个Person表和一个Belonging表.现在,每个人只有一个最喜欢的属性,特定的属性也不属于另一个人.

我的问题是,哪些信息能更好地保存?在Person表中作为favorite_belonging_id或在Belonging表中作为is_favorite条目?在我看来,第一选择似乎是更好的版本,但我想听听知识渊博的人们对此有何看法.

编辑:一个人有许多物品,但只有一个最喜欢的物品,每个属于只能属于一个人.这是一对多的协会.

mysql sql

5
推荐指数
1
解决办法
126
查看次数

将数据插入SQL Server 2012

我正在使用SQL Server 2012

我有两个表,Person并且Couple,Person具有从外键Couple,并Couple具有从"人"的外键.

当我尝试向每个表插入数据时,会发生错误,因为每个表都有来自另一个表的FK,并且最初都是空的.

CREATE TABLE [dbo].[Couple](
    [CoupleId] [int] IDENTITY(1,1) NOT NULL,
    [HusbandPersonId] [int] NOT NULL,
    [WifePersonId] [int] NOT NULL,
    [StartDate] [date] NOT NULL,
    [EndDate] [date] NOT NULL,
 CONSTRAINT [PK_Couple] PRIMARY KEY CLUSTERED 
(
    [CoupleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[Person](
    [PersonId] [int] IDENTITY(1,1) NOT NULL,
    [ChildOfCoupleId] [int] NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2012

5
推荐指数
1
解决办法
2050
查看次数