所以基本上我正在跟着一个教程问题,问我下面。 我不太确定如何连接2个不包含其他FK的表,它们(即它们的FK)都位于第3个表中。 我能得到一些帮助/解释吗? 我的答案 SELECT Forest.Fo_name, Species.Sp_name, Species.Sp_woodtype FROM Forest INNER JOIN Species ON Tree.Tr_species=Tree.Tr_forest WHERE Fo_loc='ARTIC' ORDER BY Fo_name, Sp_name “对于编号为”ARTIC“的地区的森林,列出森林名称和物种名称以及物种的木材types,消除任何重复,并按森林名称和物种名称命令输出” 物种表 +————–+——————+——+——————————–+ | Field | Type | Key | Glossary | +————–+——————+——+——————————–+ | sp_name | C(10) | PK | Species Name | | sp_woodtype | C(10) | | Wood Yielded by tree | […]
select好的主键,候选键和使用它们的外键是非常重要的数据库devise任务 – 与科学一样多的艺术。 devise任务有非常具体的devise标准。 什么标准?
模型的逻辑是: A Building有很多Rooms 一个Room可能在另一个Room (例如,一个Room – “自我”上的ForeignKey)。 一个Room只能在同一build筑物的另一个Room内(这是一个棘手的部分) 这是我有的代码: #spaces/models.py from django.db import models class Building(models.Model): name=models.CharField(max_length=32) def __unicode__(self): return self.name class Room(models.Model): number=models.CharField(max_length=8) building=models.ForeignKey(Building) inside_room=models.ForeignKey('self',blank=True,null=True) def __unicode__(self): return self.number 和: #spaces/admin.py from ex.spaces.models import Building, Room from django.contrib import admin class RoomAdmin(admin.ModelAdmin): pass class RoomInline(admin.TabularInline): model = Room extra = 2 class BuildingAdmin(admin.ModelAdmin): inlines=[RoomInline] […]
假设我的表结构如下所示: CREATE TABLE [dbo].[table1] ( [id] [int] IDENTITY(1,1) NOT NULL, [data] [varchar](255) NOT NULL, CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC) ) CREATE TABLE [dbo].[table2] ( [id] [int] IDENTITY(1,1) NOT NULL, [table1_id] [int] NOT NULL, [data] [varchar](255) NOT NULL, CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC) ) 第一个表的[id]字段对应于第二个表的[table1_id]字段。 我想要做的是在一个事务中将数据插入到两个表中。 现在我已经知道如何通过执行INSERT-SELECT-INSERT来做到这一点,如下所示: BEGIN TRANSACTION; DECLARE @id [int]; […]
我一直无法find在Rails中的.build方法的任何文档(我目前使用2.0.2)。 通过实验,似乎可以使用构build方法在logging保存之前将logging添加到has_many关系中。 例如: class Dog < ActiveRecord::Base has_many :tags belongs_to :person end class Person < ActiveRecord::Base has_many :dogs end # rails c d = Dog.new d.tags.build(:number => "123456") d.save # => true 这将正确保存狗和标签的外键。 这似乎并不适用于belongs_to关系。 d = Dog.new d.person.build # => nil object on nil.build 我也试过了 d = Dog.new d.person = Person.new d.save # => true […]
我创build了几个简单的表,我不能通过这个外键错误,我不知道为什么。 这是下面的脚本。 create TABLE Instructors ( ID varchar(10), First_Name varchar(50) NOT NULL, Last_Name varchar(50) NOT NULL, PRIMARY KEY (ID) ); create table Courses ( Course_Code varchar(10), Title varchar(50) NOT NULL, PRIMARY KEY (Course_Code) ); create table Sections ( Index_No int, Course_Code varchar(10), Instructor_ID varchar(10), PRIMARY KEY (Index_No), FOREIGN KEY (Course_Code) REFERENCES Courses(Course_Code) ON DELETE cascade […]
我以为一个外键意味着一行必须引用一行,但我正在查看一些表,这是绝对不是这样的情况。 Table1的column1在table2中的column2上有一个外键约束,但是在table2中有很多logging在column2中有相同的值。 第2列还有非唯一索引。 这是什么意思? 外键约束是否仅仅意味着至less有一条logging必须存在右列中的正确值? 我认为这意味着必须有一个这样的logging(不知道这个图像是否有空值,但我现在不那么在意)。 更新:显然,这种行为是特定于MySQL,这是我正在使用,但我没有提到它在我原来的问题。
在SQL Server中,如何从外键获取引用的表+列名称? 注意:不是密钥所在的表/列,而是所指的密钥。 例: 当表[T_ALV_Ref_FilterDisplay]的键[FA_MDT_ID]时。 指的是[T_AP_Ref_Customer].[MDT_ID] 比如创build这样一个约束的时候: ALTER TABLE [dbo].[T_ALV_Ref_FilterDisplay] WITH CHECK ADD CONSTRAINT [FK_T_ALV_Ref_FilterDisplay_T_AP_Ref_Customer] FOREIGN KEY([FA_MDT_ID]) REFERENCES [dbo].[T_AP_Ref_Customer] ([MDT_ID]) GO 当给定[T_ALV_Ref_FilterAnzeige].[FA_MDT_ID]作为input时,我需要获得[T_AP_Ref_Customer].[MDT_ID]
假设我有两个表,产品和ProductCategories。 两个表在CategoryId上都有关系。 这是查询。 select p.ProductId, p.Name, c.CategoryId, c.Name AS Category from Products p inner join ProductCategories c on p.CategoryId = c.CategoryId where c.CategoryId = 1; 当我创build执行计划时,ProductCategories表执行聚簇索引查找,这是期望的。 但是对于表产品,它执行集群索引扫描,这让我怀疑。 为什么FK不能帮助提高查询性能? 所以我必须在Products.CategoryId上创build索引。 当我再次创build执行计划时,两个表都执行索引查找。 估计的子树成本大大降低了。 我的问题是: 除了FK有助于关系约束,它还有其他用处吗? 它提高了查询性能吗? 我应该在所有表中的所有FK列(喜欢Products.CategoryId)上创build索引吗?
在SQL Server中设置外键时,在什么情况下应该将其删除或更新级联,其背后的原因是什么? 这可能也适用于其他数据库。 我最重要的是看每个场景的具体例子,最好是成功使用过的人。