标签: database-relations

在rails中使用带有has_one关联的构建

在这个例子中,我创建了一个user没有profile,然后在profile为该用户创建一个.我尝试使用带有has_one关联的构建,但是爆炸了.我看到这个工作的唯一方法是使用has_many.本user应该只有最多只能有一个profile.

我一直在尝试这个.我有:

class User < ActiveRecord::Base
  has_one :profile
end

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

但当我这样做时:

user.build_profile 
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'profiles.user_id' in 'where clause': SELECT * FROM `profiles` WHERE (`profiles`.user_id = 4)  LIMIT 1
Run Code Online (Sandbox Code Playgroud)

在rails中有一种方法可以有0或1个关联吗?

ruby-on-rails database-relations associations has-one

136
推荐指数
2
解决办法
7万
查看次数

你如何跟踪NoSQL中的记录关系?

我试图找出NoSQL KVP或文档数据库中的外键和索引的等价物.由于没有关键表(添加标记两个对象之间关系的键),我真的很难过如何能够以对普通网页有用的方式检索数据.

假设我有一个用户,该用户在整个网站上留下了很多评论.我能想到跟踪用户评论的唯一方法是

  1. 将它们嵌入用户对象(这似乎没用)
  2. 创建并维护一个user_id:comments值,其中包含每个注释的键列表[注释:34,注释:197等...]以便我可以根据需要获取它们.

然而,采用第二个例子,当你使用它来跟踪其他东西时,你很快就会遇到一块砖墙,例如一个名为"active_comments"的密钥,其中可能包含3000万个ID,这使得查询每个页面只需知道一些TON积极评论.它也很容易出现竞争条件,因为很多页面可能会同时尝试更新它.

如何在NoSQL数据库中跟踪以下关系?

  • 所有用户的评论
  • 所有有效评论
  • 所有帖子标有[keyword]
  • 俱乐部的所有学生 - 或学生所在的所有俱乐部

或者我错误地想到了这个?

database-relations nosql

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

Ruby ActiveRecord模型中的级联删除?

我正在关注rubyonrails.org上的截屏视频(创建博客).

我有以下型号:

comment.rb

class Comment < ActiveRecord::Base
    belongs_to :post
    validates_presence_of :body # I added this
end
Run Code Online (Sandbox Code Playgroud)

post.rb

class Post < ActiveRecord::Base
    validates_presence_of :body, :title
    has_many :comments
end
Run Code Online (Sandbox Code Playgroud)

模型之间的关系工作正常,除了一件事 - 当我删除帖子记录时,我希望RoR删除所有相关的评论记录.我知道ActiveRecords是独立于数据库的,所以没有内置的方法来创建外键,关系,ON DELETE,ON UPDATE语句.那么,有没有办法实现这一点(也许RoR本身可以处理删除相关的评论?)?

ruby-on-rails database-relations rails-activerecord

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

使用sqlalchemy的复合键的关系

我有这个简单的Author - Books模型,无法找到使firstName和lastName成为复合键的方法,并将其用于关系中.有任何想法吗?

from sqlalchemy import create_engine, ForeignKey, Column, String, Integer
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
engine = create_engine('mssql://user:pass@library')
engine.echo = True
session = sessionmaker(engine)()

class Author(Base):
    __tablename__ = 'authors'
    firstName = Column(String(20), primary_key=True)
    lastName = Column(String(20), primary_key=True)
    books = relationship('Book', backref='author')

class Book(Base):
    __tablename__ = 'books'
    title = Column(String(20), primary_key=True)
    author_firstName = Column(String(20), ForeignKey('authors.firstName'))
    author_lastName = Column(String(20), ForeignKey('authors.lastName'))            
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy key database-relations composite

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

使用具有多对多关系的EntityRepository :: findBy()将导致Doctrine中的E_NOTICE

对于Symfony2项目,我必须在博客文章和所谓的平台之间建立关系.平台根据您用于查看站点的域定义特定过滤器.例如:如果您通过url first-example.com加入该网站,该网站将仅提供与此特定平台相关联的博客帖子.

为此,我创建了两个实体Post和Platform.之后我将它们与多对多关系映射在一起.我正试图通过findBy()Doctrines中内置函数的多对多关系来检索数据EntityRepository.

// every one of these methods will throw the same error
$posts = $postRepo->findBy(array('platforms' => array($platform)));
$posts = $postRepo->findByPlatforms($platform);
$posts = $postRepo->findByPlatforms(array($platform));
Run Code Online (Sandbox Code Playgroud)

实体和现有对象$postRepo的正确存储库在哪里. 无论哪种方式:我最终得到以下错误:Post$platformPlatform

ErrorException: Notice: Undefined index: joinColumns in [...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1495

[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1495
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1452
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1525
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1018
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:842
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php:157
[...]/src/Foobar/BlogBundle/Tests/ORM/PostTest.php:102
Run Code Online (Sandbox Code Playgroud)

是否有可能以这种方式以多对多关系检索相关的entites,或者我被迫自己编写这些函数?奇怪的是:Doctrine不会抛出任何错误:"这不可能.",但是内部E_NOTICE.这就是为什么我认为它应该是可能的,但我在这里错过了一些观点.

剥离到有趣的部分,这两个实体看起来像这样.

<?php

namespace Foobar\CommunityBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

// [...] other namespace stuff

/**
 * @ORM\Entity(repositoryClass="Foobar\CommunityBundle\Entity\Repository\PlatformRepository")
 * @ORM\Table(name="platforms")
 */
class Platform
{
    /** …
Run Code Online (Sandbox Code Playgroud)

php doctrine many-to-many database-relations symfony

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

何时在数据库表之间使用1对1关系?

数据库设计问题:您何时决定使用1对1关系表?

我看到的其中一个地方是,例如,当你有一个User和UserProfile表时,人们会拆分它们而不是将所有列放在User表中.

从技术上讲,您可以将所有列放在一个表中,因为它们的关系是1对1.

我知道有人说对于UserProfile表,随着时间的推移你需要改变表来添加更多的列,但我真的不认为这是拆分表的强有力的理由.

所以,如果我要设计一个User表和UserProfile表,那么在一个表中执行它会更好吗?

database-design database-relations

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

mySQL中的外键和NULL

我可以将我的值表(值)中的列作为knownValues表的外键引用,并在需要时将其设置为NULL,如下例所示:

表:值

 product     type     value     freevalue
 0           1        NULL      100
 1           2        NULL      25
 3           3        1         NULL
Run Code Online (Sandbox Code Playgroud)

表:类型

 id    name     prefix
 0     length   cm
 1     weight   kg
 2     fruit    NULL
Run Code Online (Sandbox Code Playgroud)

表:knownValues

id    Type     name
0     2        banana 
Run Code Online (Sandbox Code Playgroud)

注:该类型的表values&knownValues当然是引用到的types表.

mysql sql database-design foreign-keys database-relations

18
推荐指数
2
解决办法
2万
查看次数

实现关系代数的语言特性

我一直在尝试在Scala中对关系代数进行编码(据我所知,它具有最先进的类型系统之一)并且似乎找不到找到我想要的方法.

由于我不熟悉编程语言设计的学术领域,我真的不知道要寻找什么功能.

那么,为了实现静态验证的关系代数,需要哪些语言功能以及具有这些功能的语言?

一些要求:元组是一个函数,它将名称从有问题的元组的静态定义的有效名称集合映射到名称指定的类型的值.让我们调用这个名称类型设置域名.

Relation是一组具有相同域的元组,因此任何元组的范围在Set中都是唯一的

到目前为止,该模型可以简单地通过Scala建模

trait Tuple
trait Relation[T<Tuple] extends Set[T]
Run Code Online (Sandbox Code Playgroud)

Tuple中的vals,vars和defs是上面定义的名称类型集.但是在Tuple中应该有两个同名的defs.此外,vars和impure defs也应该受到限制.

现在是棘手的部分:

两个关系的连接是一种关系,其中元组的域是来自操作数元组的域的并集.这样只保留了具有相同的域的交集范围的元组.

def join(r1:Relation[T1],r2:Relation[T2]):Relation[T1 with T2]
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

关系的投影是一种关系,其中元组的域是操作数元组域的子集.

def project[T2](r:Relation[T],?1):Relation[T2>:T]
Run Code Online (Sandbox Code Playgroud)

这是我不确定是否甚至可以找到溶剂的地方.你怎么看?定义项目需要哪些语言功能?

上面隐含的是API必须可用.层板和样板层是不可接受的.

orm dsl type-systems scala database-relations

9
推荐指数
1
解决办法
1209
查看次数

是否有任何分类算法针对具有一对多(1:n)关系的数据?

数据挖掘领域是否有任何关于对具有一对多关系的数据进行分类的研究?

例如,像这样的问题,我说我试图根据他们的班级和个人信息来预测哪些学生将退学.显然,学生个人信息与他们在课堂上取得的成绩之间存在一对多的关系.

明显的方法包括:

  1. 聚合 - 可以以某种方式将多个记录聚合在一起,将问题简化为基本分类问题.在学生分类的情况下,他们的成绩的平均值可以与他们的个人数据相结合.虽然这种解决方案很简单,但通常会丢失关键信息.例如,如果大多数采用有机化学并且低于C-结束的学生即使他们的平均水平高于B +等级也会辍学.

  2. 投票 - 创建多个分类器(通常是弱分类器)并让他们投票以确定相关数据的整体类别.这就像是建立了两个分类器,一个用于学生的课程数据,一个用于他们的个人数据.每个课程记录将被传递到课程分类器,并根据成绩和课程名称,分类器将预测学生是否会单独使用该课程记录退学.将使用个人数据分类器对个人数据记录进行分类.然后,所有课堂记录预测以及个人信息记录预测将被一起投票.这种投票可以通过多种不同的方式进行,但很可能会考虑分类器的准确程度以及分类器的确定性.显然,该方案允许比聚合更复杂的分类模式,但是涉及许多额外的复杂性.此外,如果投票表现不佳,准确性很容易受到影响.

所以我正在寻找具有一对多关系的数据分类的其他可能解决方案.

algorithm classification machine-learning database-relations data-mining

8
推荐指数
1
解决办法
1114
查看次数

如何使用Room中的嵌套关​​系

我有实体:

@Entity
public class A {
    @PrimaryKey(autoGenerate = true)
    public long id;
    public A() {}
}

@Entity()
public class B {
    @PrimaryKey @NonNull
    public String id;
    public String oneCId;
    public String anotherCId;
    public long aId;
    public B() {}
}

@Entity
public class C {
    @PrimaryKey @NonNull
    public String id;
    public String value;
    public C() {}
}
Run Code Online (Sandbox Code Playgroud)

和一些POJO:

public class AWithB {
    @Embedded
    public A a;

    @Relation(parentColumn = "id", entityColumn = "aId")
    public List<BWithC> bWithC;

    public AWithB() {}
}

public class …
Run Code Online (Sandbox Code Playgroud)

sqlite android database-relations android-room android-architecture-components

7
推荐指数
1
解决办法
3133
查看次数