在我的空闲时间里,我开始用数据库后端编写一个小型多人游戏.我希望将玩家登录信息与其他游戏信息(库存,统计数据和状态)分开,而朋友提出这可能不是最好的主意.
把所有东西放在一张桌子上会更好吗?
MySQL中有以下2个表:Customer(Id,Firstname,Lastname ...)Bonus(Id,CustomerId,Value,...)
关系是一对一,每个客户只有一个奖金.(CustomerId在奖金表中是唯一的)
问:我应该删除奖励表的Id列吗?(我想知道为什么或为什么不)
mysql database-design normalization one-to-one relational-database
除了文档中的一个示例之外,我找不到任何关于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) 我有以下类和数据库模式.我试图使用dapper从数据库中查询这些数据,这将使整个对象图水合.我查看了各种SO问题和测试,但无法弄清楚如何做到这一点.
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) 我有2个对象,ObjectA和ObjectB.
当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: true并unique: true限制我能想到的,但我必须缺少一个.这似乎不是一个特别奇怪的场景,所以必须有一些方法来实现这一点.
我试了整整一天才能搞定这个.我学到了很多关于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, WithOptionalDependent和WithOptionalPrincipial我能为双方认为User …
查询一个与另一个对象具有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) 我读过很多关于OneToOneField,ManyToManyField和Foreign Key的帖子,但是他们不是很清楚.我是Django和python编程的新手,目前正在尝试开发模型.有人可以用简单的语言向我解释,最好是举个例子,它们各自是什么?
我的代码中包含这些实体。
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关系。我的问题是我也对实体使用软删除,因此,当我删除实体时,实际上并没有删除它,只是设置了删除日期。稍后在审核跟踪中,我需要显示已删除的评论,当然,我还需要来自上级操作的信息。我的问题是,我需要建立这种关系吗?还是有更好的方法?
我的模型由父母和孩子组成,具有一对一的关系:
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对象.
one-to-one ×10
python ×3
django ×2
mysql ×2
one-to-many ×2
c# ×1
dapper ×1
database ×1
django-orm ×1
doctrine-orm ×1
foreign-keys ×1
grails ×1
grails-orm ×1
java ×1
java-ee ×1
joincolumn ×1
jpa ×1
orm ×1
php ×1
select ×1
soft-delete ×1
sql ×1
sqlalchemy ×1