标签: foreign-key-relationship

我应该使用外键在SQL中显示树关系

我试图在表格中建模树关系.例如,有"类别",类别本身可以在父类别中.

我的架构是:

id int PRIMARY KEY,
parent_id int,
name
Run Code Online (Sandbox Code Playgroud)

我的问题是,我应该将parent_id列标记为外键吗?外国意味着"外部"而不是自我参照.是否有不同类型的钥匙用于此目的?

我的问题类似于: MS SQL中的自引用约束,但我问的是另一个问题,级联不是问题.

sql database database-design foreign-keys foreign-key-relationship

3
推荐指数
2
解决办法
1805
查看次数

如何在Grails GORM中覆盖关系的级联删除?

我在Grails的GORM部分遇到了一些问题.我正在使用Grails 1.3.4和H2.

在数据库中,我有两个表模板报告.在GORM级我有两个域类TemplateReport;

class Template {

static hasMany = [reports: Report]

...
}
Run Code Online (Sandbox Code Playgroud)

class Report {

static belongsTo = [template: Template]

...
}
Run Code Online (Sandbox Code Playgroud)

默认行为似乎是当Template删除a时,删除将被级联,以便Report它所拥有的所有内容也将被删除.在数据库级别,我试图使报表中template_id -column 为ON DELETE SET NULL外键,但这不起作用.

有没有办法覆盖级联删除?

grails h2 foreign-key-relationship relational-database grails-orm

3
推荐指数
1
解决办法
3083
查看次数

Oracle:FK在多个父表中引用PK

在Oracle 10g中,是否可以为外键定义引用完整性约束以引用多个父表中的主键.

例如:

DEPT_AMER

DEPT_ID
10
11
12

DEPT_APAC

DEPT_ID
13
14
15

DEPT_EMEA

DEPT_ID
16
17
18

EMP

EMP_ID DEPT_ID
500 11
501 15

我希望EMP.DEPT_ID能够引用DEPT_AMER,DEPT_APAC和DEPT_AMER中的某个部门ID.有没有办法定义参照完整性来满足这种需求.所有3个表中的DEPT_ID都是从一个公共序列生成的,并保证是唯一的.

如果无法使用引用完整性约束,是否有更好的方法来维护此数据完整性?

sql oracle referential-integrity foreign-key-relationship

3
推荐指数
2
解决办法
2894
查看次数

当表中的每一列都是外键时,它是好还是过度?

我正在构建一个可能的车辆数据库,其中每个条目都有一个Make,Model,Year和Engine.

我把它分成了制表(福特,雪佛兰,宝马等)和模型(Impala,Camaro,F-150等)和年(1920,...... 2012)和发动机(327,350等).

由于我现在每个Make,Model,Year和Engine都有一个表,并且每个表都有唯一的主键,因此主"MakesModelsAndYears"表中的每一行都只由四个外键组成.

这是否过度,或者真正存储的效率高于我创建独特索引的一个大表?我对"一个大桌子"方法的关注是像1970年这样的年代会重复多次(1970年雪佛兰Impala,1969年雪佛兰Camaro等),因为它有模型甚至引擎.

谢谢你的指导!

在此输入图像描述

跟进:

对于那些追随者,我将反馈结合到答案中并得出了这个模式.图像没有详细显示FK,但它们实际上是答案所暗示的:

在此输入图像描述

sql primary-key foreign-key-relationship

3
推荐指数
2
解决办法
460
查看次数

django外键关系查找

给定以下模型:

class Post(models.Model):
    title = models.CharField(max_length=200)
    html = models.TextField()

class PostTag(models.Model):
    post = models.ForeignKey('Post')
    tag = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

我想完成基于给定PostTag的帖子查找。因此,如果我有两个帖子A和B标记为“ foo”,则我希望能够查找带有该标签的所有帖子,并取回帖子A和B。

我认为查询看起来像以下内容:

posts = Post.objects.filter(tag=tag)
Run Code Online (Sandbox Code Playgroud)

关于从何处开始实现此目标的任何提示?

python django foreign-key-relationship

3
推荐指数
1
解决办法
3802
查看次数

EntityFramework包括vs join性能

我想知道,在使用实体框架时,哪一个会产生更好的性能?

我已经读过,如果你的entites之间有外来关系,那么最好使用include over join.

如果我只是从2个不同的entites(具有外键关系)检索1行,那么如果我使用include over join会有什么不同吗?

我正在取回的记录数量是否会影响join和include之间的性能?

.net entity entity-framework join foreign-key-relationship

3
推荐指数
1
解决办法
5574
查看次数

外键与Django Model中的相关字段发生冲突

我正在研究一个模型类,它将代表一个家庭成员与另一个家庭成员的关系(一部分基因学特征)

我的班级是:

class FamilyLink(models.Model):
    from_legacy = models.ForeignKey(Legacy)
    to_legacy = models.ForeignKey(Legacy)

    class Meta:
        unique_together = ("from_legacy", "to_legacy")
Run Code Online (Sandbox Code Playgroud)

当我尝试迁移时,我收到以下错误消息:

CommandError:一个或多个模型未验证:archive.familylink:字段'from_legacy'的访问者与相关字段'Legacy.familylink_set'冲突.将related_name参数添加到'from_legacy'的定义中.archive.familylink:字段'to_legacy'的访问者与相关字段'Legacy.familylink_set'发生冲突.将related_name参数添加到'to_legacy'的定义中.

看来我的问题是在同一个类中有两个foreignKey都指向同一个类(在本例中是"Legacy"类).有谁知道如何解决/解决这个问题?

我很欣赏这些想法和专长.

python django many-to-many django-models foreign-key-relationship

3
推荐指数
1
解决办法
2864
查看次数

如何使用eloquent基于数据库关系返回json响应

我对Laravel很新.我正在想与Eloquent合作.

假设我有2个表:类别和产品.这两个表有一对多的关系.1类可以有很多产品.

我想返回一个JSON响应,该响应由一系列类别组成,其中每个类别都有一系列产品.它应该如下所示:

[
   {"name":"Category 1", "products": [
                                        {"name":"Product 1","price":"2.50"},
                                        {"name":"Product 2","price":"2.50"}
                                     ]
   },
   {"name":"Category 2", "products": [
                                        {"name":"Product 1","price":"1.95"},
                                        {"name":"Product 2","price":"2.15"}
                                     ]
   }
]
Run Code Online (Sandbox Code Playgroud)

楷模:

Category.php

<?php

class Category extends Eloquent{

    protected $table = 'categories';

    public function products(){
        return $this->hasMany('Product');
    }
}
Run Code Online (Sandbox Code Playgroud)

Product.php

<?php

class Product extends Eloquent {

    protected $table = 'products';

    public function categories(){
        return $this->belongsTo('Category');
    }
}
Run Code Online (Sandbox Code Playgroud)

数据库表:

create_categories_table:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCategoriesTable extends Migration {

    public function up()
    {
        Schema::create('categories', function(Blueprint $table) …
Run Code Online (Sandbox Code Playgroud)

json foreign-key-relationship one-to-many laravel eloquent

3
推荐指数
1
解决办法
8464
查看次数

Rails模型中的一对多关系

我正在学习Ruby on Rails,我正在通过建立一个小网站来练习.我试图为一些模型建立一对多的关系,但我遇到了一些麻烦.

目前我被困住了.我有一个Users,ExpensePictures,IncomePictures模型.

用户模型

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :rememberable, :validatable

  has_many :expense_picture, :income_picture
end
Run Code Online (Sandbox Code Playgroud)

ExpensePicture模型

class ExpensePicture < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

IncomePicture模型

class IncomePicture < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我坚持如何真正建立这些关系.

我希望用户one to manyIncomePicture和有关系ExpensePicture

我也不确定如何处理模型中的图像文件

例如:

User
    - user_id (primary key)
    - user_name

  ExpensePicture
    - picture_id (primary key)
    - user_id (foreign key)
    - ExpensePictureFile

  IncomePicture
    - picture_id …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails foreign-key-relationship one-to-many

3
推荐指数
1
解决办法
5062
查看次数

如何在Django中获取子模型中存在外键的父模型的所有对象?

我有2个型号

#models
class Parent(models.Model):
     name = models.CharField()

class Child(models.Model)
     parentLink = models.ForeignKey(Parent)
     timeStamp = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

我希望Parent模型的所有对象都具有Child模型中提到的外键和timeStamp字段中的一些过滤器.

如何反向获取对象?

它的MySQL就是这样的

SELECT Parent.name FROM Parent JOIN Child on Parent.Id = Child.parentLink WHERE Child.timeStamp > '2016-01-01 : 00.00.00'
Run Code Online (Sandbox Code Playgroud)

python mysql django django-models foreign-key-relationship

3
推荐指数
1
解决办法
1426
查看次数