相关疑难解决方法(0)

是否有 DBMS 允许引用视图(而不仅仅是基表)的外键?

受到 Django 建模问题的启发:Database Modeling with multiple many-to-many Relations in Django。db-design 是这样的:

CREATE TABLE Book
( BookID INT NOT NULL
, BookTitle VARCHAR(200) NOT NULL
, PRIMARY KEY (BookID)
) ;

CREATE TABLE Tag
( TagID INT NOT NULL
, TagName VARCHAR(50) NOT NULL
, PRIMARY KEY (TagID)
) ;

CREATE TABLE BookTag
( BookID INT NOT NULL
, TagID INT NOT NULL
, PRIMARY KEY (BookID, TagID)
, FOREIGN KEY (BookID)  REFERENCES Book (BookID)
, FOREIGN KEY (TagID) …
Run Code Online (Sandbox Code Playgroud)

foreign-key database-design referential-integrity

23
推荐指数
3
解决办法
6889
查看次数

如何使用单列创建复合主键的外键?

我正在使用一个已经存在的“查找”样式表,它在 Microsoft SQL Server 2012 中有一个复合主键(不是我的设计)。我想在另一个表中向它添加一个外键,但只有一个单列,我正在寻找一种解决方法,无论多么不合理(基于 CLR 的自定义库或 dll 劫持,甚至),只是为了看看需要做多少。

下面是一个例子:

CREATE TABLE dbo.Lookup (
    FieldName VARCHAR(100) NOT NULL,
    Value VARCHAR(100) NOT NULL,
    PRIMARY KEY (FieldName, Value)
)

INSERT INTO Lookup (FieldName, Value)
SELECT 'This', 'A' UNION ALL
SELECT 'This', 'B' UNION ALL
SELECT 'That', 'A'

CREATE TABLE dbo.OtherTable (
    ID INT PRIMARY KEY IDENTITY(1,1),
    Blah VARCHAR(100)
)

ALTER TABLE dbo.OtherTable WITH CHECK ADD CONSTRAINT [FK__OtherTable__Blah] 
FOREIGN KEY(Blah) REFERENCES Lookup (Value)

--Cannot create this: 
--"There are no primary or candidate …
Run Code Online (Sandbox Code Playgroud)

foreign-key sql-server sql-server-2012

7
推荐指数
1
解决办法
6939
查看次数