Draw.IO: SQL插件中的外键

7

Draw.IO支持外键关系吗?我用很多不同的SQL示例(w3schools sql foreignkey)进行了测试,但没有一个有效。


似乎还没有实现...我将要实现它,并会发布一个完整的答案,涵盖我所开发的所有支持的SQL类型。 - BrunoMartinsPro
3个回答

5
由于预算问题,我只能实现与MySQL、SQL Server和SQL Server生成的脚本兼容。该拉取请求正在等待审核:https://github.com/jgraph/drawio/pull/233
MySQL示例:
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (OrderID) REFERENCES Persons(PersonID)
);

SQL Server 示例:

CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

CREATE TABLE Orders (
    OrderID int NOT NULL,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (OrderID)
    REFERENCES Persons(PersonID)
);

SQL Server生成的脚本示例:

CREATE TABLE [dbo].[aspnet_Applications](
    [ApplicationName] [nvarchar](256) NOT NULL,
    [LoweredApplicationName] [nvarchar](256) NOT NULL,
    [ApplicationId] [uniqueidentifier] NOT NULL,
    [Description] [nvarchar](256) NULL,
PRIMARY KEY NONCLUSTERED 
(
    [ApplicationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
    [LoweredApplicationName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
    [ApplicationName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[aspnet_Users](
    [ApplicationId] [uniqueidentifier] NOT NULL,
    [UserId] [uniqueidentifier] NOT NULL,
    [UserName] [nvarchar](256) NOT NULL,
    [LoweredUserName] [nvarchar](256) NOT NULL,
    [MobileAlias] [nvarchar](16) NULL,
    [IsAnonymous] [bit] NOT NULL,
    [LastActivityDate] [datetime] NOT NULL,
PRIMARY KEY NONCLUSTERED 
(
    [UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO


ALTER TABLE [dbo].[aspnet_Users]  WITH CHECK ADD FOREIGN KEY([ApplicationId])
REFERENCES [dbo].[aspnet_Applications] ([ApplicationId])
GO

1

1
对于所有类型的 SQL,特别是生成的 SQL,这并没有完全发挥作用。 我提交了一个 PR 来添加答案中描述的功能。 自 2016 年以来,该 GIF 不再更新。 https://brunomartins.pro/public/drawio/plugins/sql/DIO.PNG - BrunoMartinsPro

1
我对@brunomartinspro编写的SQL解析器进行了重写,使其在空格和大小写敏感性方面更加宽容,并支持更多的SQL数据库类型。此外,现在外键关系可以正常工作并且可以正确绘制,只等待PR合并。
链接:https://github.com/jgraph/drawio/pull/3091 图片预览: sql import fk preview

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接