标签: foreign-key-relationship

你能解释一下数据库中的关联关系吗?

我认为它是简单外键关系的别名,但似乎不是。

你能以MySQL为例什么是关联关系

我猜这意味着多对多关系,是真的吗?

database associations foreign-key-relationship

4
推荐指数
1
解决办法
4516
查看次数

oracle sql:无法将外键添加到表 -> 标识符无效?

首先,我是 db 和 sql 的真正新手。但是,我必须有表、PERSON 和 SPECIES,并且我想向表 SPECIES 添加一个外键。尝试添加外键时,我总是收到错误消息“ORA-900904:无效标识符”。我就是不知道我做错了什么,为什么它不起作用?!?!

这是我的方法:

PERSON 表和主键

create table person
(
name varchar2 (30),
firstname varchar2 (30),
persid number (8) not null
)
;

alter table person 
add constraint person_pk 
primary key (persid)
;
Run Code Online (Sandbox Code Playgroud)

SPECIES 表和主键

create table species
(
speciesnamelat varchar2 (30),
vartid number (8) not null
)
;

alter table Species
add constraint species_pk
primary key (vartid)
;
Run Code Online (Sandbox Code Playgroud)

这部分工作正常,但以下不起作用:

指代人的物种的外键

alter table species
add constraint species_person_fk
foreign key (persid)
references person (persid)
; …
Run Code Online (Sandbox Code Playgroud)

sql oracle foreign-keys foreign-key-relationship

4
推荐指数
1
解决办法
1万
查看次数

Doctrine2 - 使用外键列作为普通字段

有没有办法在教义中拥有这样的东西:

class Entity {

    /**
     * @Column(name="related_entity_id")
     */
    private $relatedEntityId;

    /**
     * @ManyToOne(targetEntity="RelatedEntitiy")
     * @JoinColumn(name="related_entity_id", referencedColumnName="id")
     */ 
    private $relatedEntity;
}
Run Code Online (Sandbox Code Playgroud)

我想做的事情是这样的:

调用Entity::setRelatedEntityId($someId),并持久化实体,并通过调用Entity::getRelatedEntity()让实体返回相关实体。

相关实体是从严格限制的表中选择的,它永远不会在运行时动态增长,因此相关实体 id 的数量是有限的。

在创建新实体时,我想设置相关实体​​ id,但不必从数据库中获取整个相关实体。

就我可以测试这一点而言,它不起作用,因为如果我设置了 relatedEntityId 而不是 relatedEntity,Doctrine 会自动将 related_entity_id 列设置为 null,因为基本上没有建立任何关系。

我也试过做这样的事情:

删除 relatedEntityId 属性,并使用

Entity::setRelatedEntity(new RelatedEntity($relEntId))
Run Code Online (Sandbox Code Playgroud)

RelatedEntity 的构造函数将设置 id,但不会设置其他值。我不想保留相关实体(它的值已经在数据库中为给定的 $relEntId 设置),但这次 Doctrine 在刷新时发出错误信号,因为它有一个非持久化的实体。

基本上,我想要做的是创建一个关系,除了相关实体的 Id 之外什么都不知道。如果有其他方法可以做到这一点,请分享。

提前致谢

编辑:

我找到了解决方法。由于相关实体将是一组有限的不可变对象,我已经完成了以下操作:

  1. 使用 entityManager 查找所有相关实体;
  2. 将列表注入将创建新实体的对象
  3. 创建新实体时,从列表中选择一个相关实体作为其相关实体

我会把这个问题留待一两天,以防万一有人想出更好的办法。

php orm foreign-key-relationship doctrine-orm

4
推荐指数
1
解决办法
2428
查看次数

实体框架 5 - 代码第一个数组导航属性与接口类型一对多

这些是我的课程:

public class Post : IPost
{
    public int Id { get; set; }
    public virtual int[] DuplicateOf { get; set; }
    public virtual ICommentInfo[] Comments { get; set; }
}

 public class CommentInfo : ICommentInfo
{
    public virtual string Author { get; set; }
    public virtual int Id { get; set; }
    public virtual string Text { get; set; }

    public virtual int PostId{ get; set; }
    [ForeignKey("PostId")]
    public virtual Post Post { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

将此 CommentConfiguration …

foreign-key-relationship code-first navigation-properties ef-code-first entity-framework-5

4
推荐指数
1
解决办法
4743
查看次数

如果在mysql中删除父行,如何自动删除所有引用行?

我有一个包含大约50个表的数据库.

假设我有一个名为parent的表,其中包含id主键和24个关于这个父表的近似子表.

我没有用过删除级联.我已经搜索了关于做连接可以在所有子表中执行删除.但加入20-30桌?太多了.

如果父项被删除,请告诉我有没有其他解决办法删除所有这些子行.

mysql sql parent-child foreign-key-relationship cascading-deletes

4
推荐指数
1
解决办法
1万
查看次数

(Python) - Peewee - 如何创建外键

我试图通过外键在两个表字段之间创建关系,但在文档或 stackoverflow 上的相关线程中的示例失败。这是我的代码:

class User(BaseModel):
    """ Field Types """
    user_id = PrimaryKeyField()
    username = CharField(25)
    role = ForeignKeyField(User, to_field='role_id')

    class Meta:
        db_table = 'users'


class User(BaseModel):
    """ Field Types """
    role_id = PrimaryKeyField()
    rolename = CharField(25)

    class Meta:
        db_table = 'roles'
Run Code Online (Sandbox Code Playgroud)

to_field 指的是我的代码片段中等效表“users”中的相关字段。在 peewee 的文档中,我看到 related_names 作为参数,它引用用户模型中不存在的字段推文。

class User(Model):
    name = CharField()

class Tweet(Model):
    user = ForeignKeyField(User, related_name='tweets')
    content = TextField()
Run Code Online (Sandbox Code Playgroud)

希望有人可以解释这个语法。

python sql orm foreign-key-relationship peewee

4
推荐指数
1
解决办法
1万
查看次数

一列上的两个外键

我在 MySQL 中有两个表,命名manualslibrary. 两者都可以上传文件,所以我制作了第三个表,名为files. 在文件中,我有一列 parent_id。我可以将 parent_id 设为手册和库中的外键吗?

我正在使用 Laravel (4.2) 并尝试过这个,但它不起作用:

$table->integer('parent_id')->unsigned();
$table->foreign('parent_id')->references('id')->on('library');
$table->foreign('parent_id')->references('id')->on('manuals');
Run Code Online (Sandbox Code Playgroud)

mysql foreign-key-relationship laravel

4
推荐指数
1
解决办法
5280
查看次数

Django 快捷方式嵌套外键

假设我的 models.py 中有以下内容:

class Book:
    pass

class Part:
    book = models.ForeignKey(Book)

class Chapter:
    part = models.ForeignKey(Part)
    number = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想要做

book = Book.objects.get(id=someID)
chapters = Book.chapters.get(number=4)
Run Code Online (Sandbox Code Playgroud)

什么是干净的方法?我在书本课上想到了经理,但它似乎不适用于这种情况。

当然,我可以在课堂书籍上实现 get_chapters 方法,但我想避免这种情况。

有任何想法吗 ?

python django nested foreign-key-relationship

4
推荐指数
1
解决办法
3653
查看次数

如何在SQLAlchemy中指定一个条件,其中一个条件要求列为空?

不确定这个问题的正确标题应该是什么.我有以下架构:

  • 事项与WorkItems有一对多的关系.
  • WorkItem与LineItems有一对一(或一零)的关系.

我试图在Matters和WorkItems之间创建以下关系

Matter.unbilled_work_items = orm.relation(WorkItem,
  primaryjoin = (Matter.id == WorkItem.matter_id) and (WorkItem.line_item_id == None),
  foreign_keys = [WorkItem.matter_id, WorkItem.line_item_id],
  viewonly=True
)
Run Code Online (Sandbox Code Playgroud)

抛出:

AttributeError: '_Null' object has no attribute 'table'
Run Code Online (Sandbox Code Playgroud)

这似乎是说,primaryjoin中的第二个子句返回一个类型为_Null的对象,但它似乎期待具有"table"属性的东西.

这似乎对我来说应该是非常简单的,我错过了一些明显的东西吗?

更新

答案是将primaryjoin线路更改为:

primaryjoin = "and_(Matter.id == WorkItem.matter_id, WorkItem.line_item_id == None)"
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy foreign-key-relationship

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

在MySQL5中添加复合外键失败

我试图强制用户的地址信息中的州/省和国家名称来自我列出国家和州/省的一组表格.为了做到这一点,我尝试运行这样的alter table命令......

ALTER TABLE User
    ADD FOREIGN KEY (stateProvince,country)
    REFERENCES `StateProvince`(`name`,`countryName`);
Run Code Online (Sandbox Code Playgroud)

然后我收到这条消息......

使用外键约束创建表'realtorprint_dev/#sql-d5c_3d'失败.引用的表中没有索引,其中引用的列显示为第一列.

有没有人知道如何处理此错误消息?

这是州和国家表的创建......

CREATE TABLE Country (
  name varchar(40) NOT NULL,
  abbreviation varchar(4) NOT NULL,
  PRIMARY KEY  (name)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

CREATE TABLE StateProvince (
  countryName varchar(40) NOT NULL,
  name varchar(100) NOT NULL,
  abbreviation varchar(3) NOT NULL,
  PRIMARY KEY  (countryName,name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

alter table StateProvince
add constraint FK_StateProvince_Country
foreign key (countryName)
references Country (name);
Run Code Online (Sandbox Code Playgroud)

现在对于用户表...

create table realtorprint_dev.user (
  id bigint not null,
  created datetime, …
Run Code Online (Sandbox Code Playgroud)

mysql mysql5 foreign-key-relationship composite-key

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