标签: one-to-one

一对一的数据库关系?

在我的空闲时间里,我开始用数据库后端编写一个小型多人游戏.我希望将玩家登录信息与其他游戏信息(库存,统计数据和状态)分开,而朋友提出这可能不是最好的主意.

把所有东西放在一张桌子上会更好吗?

mysql sql database one-to-one

5
推荐指数
2
解决办法
3493
查看次数

在一对一的关系中我应该删除表的id列之一吗?

MySQL中有以下2个表:Customer(Id,Firstname,Lastname ...)Bonus(Id,CustomerId,Value,...)

关系是一对一,每个客户只有一个奖金.(CustomerId在奖金表中是唯一的)

问:我应该删除奖励表的Id列吗?(我想知道为什么或为什么不)

mysql database-design normalization one-to-one relational-database

5
推荐指数
1
解决办法
224
查看次数

django一对一关系如何将名称映射到子对象?

除了文档中的一个示例之外,我找不到任何关于django如何选择可以从父对象访问子对象的名称的文档.在他们的示例中,他们执行以下操作:

    class Place(models.Model):
        name = models.CharField(max_length=50)
        address = models.CharField(max_length=80)

        def __unicode__(self):
            return u"%s the place" % self.name

    class Restaurant(models.Model):
        place = models.OneToOneField(Place, primary_key=True)
        serves_hot_dogs = models.BooleanField()
        serves_pizza = models.BooleanField()

        def __unicode__(self):
            return u"%s the restaurant" % self.place.name

    # Create a couple of Places.
    >>> p1 = Place(name='Demon Dogs', address='944 W. Fullerton')
    >>> p1.save()
    >>> p2 = Place(name='Ace Hardware', address='1013 N. Ashland')
    >>> p2.save()

    # Create a Restaurant. Pass the ID of the "parent" object as this object's ID.
    >>> r …
Run Code Online (Sandbox Code Playgroud)

python django one-to-one

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

如何使用dapper一起选择一对多关系和一对一

我有以下类和数据库模式.我试图使用dapper从数据库中查询这些数据,这将使整个对象图水合.我查看了各种SO问题和测试,但无法弄清楚如何做到这一点.

DB Schema

Author
  -AuthorId
  -Name

Post
  -PostId
  -Content
  -AuthorId

Comment
  -PostId
  -CommentId
  -Content

Tag
  -PostId
  -TagId
  -Name
Run Code Online (Sandbox Code Playgroud)

public class Author
{
    public int AuthorId { get; set; }
    public string Name { get; set; }
}

public class Tag
{
    public int PostId { get; set; }
    public int TagId { get; set; }
    public string Name { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Content { get; …
Run Code Online (Sandbox Code Playgroud)

select one-to-one one-to-many dapper

5
推荐指数
1
解决办法
3693
查看次数

如何在GORM中建立可选的一对一关系?

我有2个对象,ObjectAObjectB.

ObjectA被创建,ObjectB则无法(不能,由于没有数据还)还不存在.

一旦ObjectB创建,如果存在适当的一个,它需要ObjectA附加一个对应的.如果没有合适的,那么新的简单地没有连接到一个.ObjectAObjectB

因此,所有ObjectA实例最终将附加到一个ObjectB,但并非所有ObjectB实例都将具有ObjectA.

基本上,我正在寻找GORM来构建这样的数据库表:

ObjectA
- Id (NotNull, unique)
- ObjectB_Id[FK: ObjectB.Id] (unique)

ObjectB
- Id (NotNull, unique)
Run Code Online (Sandbox Code Playgroud)

如何组合GORM域类来完成此操作?

我已经试过几乎所有的组合hasOne,belongsTo,原始属性,nullable: trueunique: true限制我能想到的,但我必须缺少一个.这似乎不是一个特别奇怪的场景,所以必须有一些方法来实现这一点.

grails one-to-one grails-orm grails-domain-class

5
推荐指数
1
解决办法
2761
查看次数

实体框架5代码优先中的一对一和一对多关系

我试了整整一天才能搞定这个.我学到了很多关于EF的Fluent API的知识(例如,是一篇优秀的文章),但是我没有成功.

我有三个实体:

public class Address
{
   [Key]
   public virtual int AddressId { get; set; }
   public virtual string AddressString { get; set; }
}
public class User
{
   [Key]
   public virtual int UserId { get; set; }
   public virtual ICollection<Address> Addresses { get; set; }
}
public class House
{
   [Key]
   public virtual int HouseId { get; set; }
   public virtual Address Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并尝试的所有组合HasMany, HasOptional, WithOptional, WithOptionalDependentWithOptionalPrincipial我能为双方认为User …

c# one-to-one one-to-many ef-code-first entity-framework-5

5
推荐指数
1
解决办法
6946
查看次数

非主键列的一对一关系

查询一个与另一个对象具有OneToOne关系的实体时遇到问题。这是方案:

数据库表:

create table people (
    id decimal(10,0) NOT NULL,
    email varchar(512) NOT NULL
);

create table users (
    email varchar(512) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

测试数据:

insert into users (email) values ('jhon@domain.com');
insert into users (email) values ('mary@domain.com');

insert into people (id, email) values (1, 'jhon@domain.com');
insert into people (id, email) values (2, 'mary@domain.com');
Run Code Online (Sandbox Code Playgroud)

实体:

@Entity(name = "people")
public class Person implements Serializable {

    @Column
    @Id
    private long id;

    @Column
    private String email;

    public long getId() {
        return id;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java jpa one-to-one java-ee joincolumn

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

Django OneToOneField,ManyToManyField,外键

我读过很多关于OneToOneField,ManyToManyField和Foreign Key的帖子,但是他们不是很清楚.我是Django和python编程的新手,目前正在尝试开发模型.有人可以用简单的语言向我解释,最好是举个例子,它们各自是什么?

python django foreign-keys one-to-one django-orm

5
推荐指数
1
解决办法
1397
查看次数

教义软件删除一对一关系

我的代码中包含这些实体。

class Review extends BaseEntity {

    /** @ORM\OneToOne(targetEntity="Action", mappedBy="review") */
    protected $action;
}


class Action extends BaseEntity {

    /** @ORM\OneToOne(targetEntity="Review", inversedBy="action") */
    protected $review;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这是“操作”和“评论”之间的OneToOne关系。我的问题是我也对实体使用软删除,因此,当我删除实体时,实际上并没有删除它,只是设置了删除日期。稍后在审核跟踪中,我需要显示已删除的评论,当然,我还需要来自上级操作的信息。我的问题是,我需要建立这种关系吗?还是有更好的方法?

php one-to-one soft-delete doctrine-orm

5
推荐指数
1
解决办法
597
查看次数

SQLAlchemy查询过滤子属性

我的模型由父母和孩子组成,具有一对一的关系:

class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    child = relationship("Child", backref="parent", uselist=False, lazy='joined')


class Child(Base):
    __tablename__ = 'child'
    child_id = Column(Integer, ForeignKey(Parent.id), primary_key=True)
    value = Column(Integer)
Run Code Online (Sandbox Code Playgroud)

我的测试数据如下:

q = s.query(Parent)
pd.read_sql(q.statement,s.bind) 
    id  name  child_id  value
    1      a         1     10
    2      b         2     20
    3      c         3     30
Run Code Online (Sandbox Code Playgroud)

现在我想使用此查询只获得child.value> 20的父母:

q = s.query(Parent).filter(Parent.child.value > 20)
Run Code Online (Sandbox Code Playgroud)

但是会发生以下错误:

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object 
associated with Parent.child has an attribute 'value'
Run Code Online (Sandbox Code Playgroud)

当然我可以直接在Child类上查询,但我的目标是检索一个Parent对象.

python orm sqlalchemy one-to-one

5
推荐指数
1
解决办法
4651
查看次数