sql - 一个组件为外键的复合键
问题描述
我有一个财务应用程序,我每天都在其中存储股票数据,所以我从Ticker
and创建一个主键Date
。
我还需要制作Ticker
(这是上述复合键的一部分)另一个名为Tickers
.
但是,当我在 SQL Server Management Studio 中添加外键关系时,它要求我提供两个列的链接Ticker
和Date
,而 Ticker 表只包含Ticker
(这是我只想绑定的)。
请对我做错了什么有任何想法,或者这是不可能的?
我的表格如下:
CREATE TABLE [dbo].[Tickers](
[Ticker] [nvarchar](8) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Market] [int] NOT NULL,
[Locale] [int] NOT NULL,
[Type] [int] NOT NULL,
[Active] [bit] NOT NULL,
[PrimaryExch] [nvarchar](50) NOT NULL,
[Updated] [datetime2](7) NOT NULL,
[Currency] [int] NOT NULL,
CONSTRAINT [PK_Tickers] PRIMARY KEY CLUSTERED
(
[Ticker] 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].[AggregateDay](
[Ticker] [nchar](8) NOT NULL,
[Date] [date] NOT NULL,
[Volume] [decimal](18, 0) NULL,
[Open] [decimal](18, 0) NULL,
[Close] [decimal](18, 0) NULL,
[High] [decimal](18, 0) NULL,
[Low] [decimal](18, 0) NULL,
[Samples] [int] NULL,
CONSTRAINT [PK_AggregateDay] PRIMARY KEY CLUSTERED
(
[Ticker] ASC,
[Date] 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
解决方案
您的设置存在的一个问题是父列和子列的数据类型不同:[dbo].[Tickers]([Ticker])
is [nvarchar](8)
,而[dbo].[AggregateDay](Ticket)
is [nchar](8)
。
如果对齐两种数据类型,则可以创建关系,如下所示:
CREATE TABLE [dbo].[AggregateDay](
[Ticker] [nvarchar](8) NOT NULL
REFERENCES [dbo].[Tickers]([Ticker]), -- foreign key declaration
[Date] [date] NOT NULL,
[Volume] [decimal](18, 0) NULL,
[Open] [decimal](18, 0) NULL,
[Close] [decimal](18, 0) NULL,
[High] [decimal](18, 0) NULL,
[Low] [decimal](18, 0) NULL,
[Samples] [int] NULL,
CONSTRAINT [PK_AggregateDay] PRIMARY KEY CLUSTERED
([Ticker] ASC, [Date] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
) ON [PRIMARY]
推荐阅读
- docker - Laradock:每个项目的单独环境或多个项目的单个环境?
- c++ - 该程序是针对 Protocol Buffer 运行时库的 2.6.1 版本编译的,该版本与已安装的版本 (3.5.0) 不兼容
- swift - 如何将 URLRequest 转换为 Alamofire.URLConvertible
- powershell - 下载随机名称的文件并执行
- php - 在没有 find_in_set 的情况下,如何在 mysql 中以逗号分隔的字符串中存在单个数字
- c++ - 打算调用派生类的虚函数,却错误地调用了基类的虚函数。对象未切片
- python - pytest-xdist 线程对单例是否安全
- python - 在不阻塞 UI 的情况下启动 HTTP 服务器
- shell - 在 Emacs 中分析 shell 命令
- java - 如何在运行配置中容纳从 Eclipse 到 IntelliJ 的类路径用户条目