我正在开发Java桌面应用程序并使用JPA进行持久化.我有一个问题如下:
我有两个实体:
国家/地区具有以下属性:
City具有以下属性:
现在因为在两个不同的国家/地区可以有两个同名的城市,因此数据库中的City表的primaryKey是由CityName和组成的复合主键CountryName.
现在的问题是如何实现的主键
City作为一个Entity在Java中
@Entity
public class Country implements Serializable {
private String countryName;
@Id
public String getCountryName() {
return this.countryName;
}
}
@Entity
public class City implements Serializable {
private CityPK cityPK;
private Country country;
@EmbeddedId
public CityPK getCityPK() {
return this.cityPK;
}
}
@Embeddable
public class CityPK implements Serializable {
public String cityName;
public String countryName;
}
Run Code Online (Sandbox Code Playgroud)
现在我们知道上面代码中的from Country和Cityis OneToMany之间的关系,我 …
user.php的;
<?php
namespace Acme\DemoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="like")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="itemtype", type="integer")
* @ORM\DiscriminatorMap({
* "1" = "LikeArticle",
* "2" = "LikePage",
* "3" = "LikeSite",
* })
*/
class Like
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $userid;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="likes")
* @ORM\JoinColumn(name="userid", referencedColumnName="id")
*/
protected $user;
}
Run Code Online (Sandbox Code Playgroud)
LikePage.php;
<?php
namespace Acme\DemoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="like_page")
*/
class …Run Code Online (Sandbox Code Playgroud) 有没有人知道从python 3中的SQLAlchemy模型制作ER图的方法.我找到了sqlalchemy_schemadisplay,它是python 2,因为pydot和ERAlchemy只是python 2.
我在这里看到很多问题,但没有人适应我的问题.我正在尝试创建一个可扩展的ER模型,如果我想添加更多数据,几乎不会破坏任何东西,所以我试图创建的是:
有两种类型的用户,比如Admin和Worker,他们有不同的角色.
管理员可以做一个问题的CRUD,也可以创建一个用户可以加入一起玩的房间(这只是一个名字,像Kahoot!那样)但也许在其中创建更多属性是个好主意,比如世界卫生组织正在这个房间里玩,每个人都要点,但是当我向你展示设计时,让我们再谈谈它.
好吧,就我的设计而言,我有:
表用户包含:
_id
username
password
date_creation
Run Code Online (Sandbox Code Playgroud)
这是一个默认的,但是我想知道如何定义角色,如果它是管理员或工人,比如isAdmin:true然后我检查这个Bool?或者我可以创建另一个角色表并将其连接到用户表?
但也许我必须为两者创建一个表,我的意思是有一个管理员,它有一个密码和一些功能,然后使用户工具有另一个密码和其他功能.
然后我想让问题表包含:
_id
question_name
answers[1,2,3,4]
correctAnswer or answers because it can be multi option chooser
topic
isExamQuestion
dificulty
Run Code Online (Sandbox Code Playgroud)
那么Room表应该包含:
_id
name
capacity
type (game can be as a group or solo) that's why this attribute
exam (This should be a flag to know if this question is for an exam or not (It can be for EXAM or PRACTISE)
ranking (This is the top X from 1 to X)
don't …Run Code Online (Sandbox Code Playgroud) mysql database postgresql database-design entity-relationship
当我将实体模型添加到我的解决方案时,我收到错误3007.
我找到了这些链接:
关于此错误:
错误1错误3007:从第89,94行开始映射片段中的问题:非主键列[Person_ID]正在两个片段中映射到不同的概念侧属性 - 数据不一致是可能的,因为相应的概念侧属性可以独立修改.
他们的回答:我同意他们的结论,即只需删除标量属性Person_ID并保留导航属性我的问题就解决了.然而,由于我正在动态构建我的数据库并且我的实体经常更新,因此这不是很可扩展.我不希望每次更新它时都要经历并清理我的实体.
我的问题:有没有办法通过纠正EF构建实体的方式来修复错误?或者有没有办法通过代码删除标量属性?也许甚至有一些我可以忽视的选择.
任何人都可以说某种方法将SQL代码转换为ERD等数据图表吗?对于像MySQL或一般SQL的som DBMS
我有两个MongoDB集合user,customer它们是一对一的关系.我是MongoDB的新手,虽然我安装了Mongoose,但我正在尝试手动插入文档.我不确定哪种是在MongoDB中存储文档引用的正确方法.
我正在使用规范化数据模型,这是我的Mongoose模式快照customer:
/** Parent user object */
user: {
type: Schema.Types.ObjectId,
ref: "User",
required: true
}
Run Code Online (Sandbox Code Playgroud)
{
"_id" : ObjectId("547d5c1b1e42bd0423a75781"),
"name" : "john",
"email" : "test@localhost.com",
"phone" : "01022223333",
}
Run Code Online (Sandbox Code Playgroud)
我想user从customer文档中引用这个文档.以下哪项是正确的 - (A)或(B)?
{
"_id" : ObjectId("547d916a660729dd531f145d"),
"birthday" : "1983-06-28",
"zipcode" : "12345",
"address" : "1, Main Street",
"user" : ObjectId("547d5c1b1e42bd0423a75781")
}
Run Code Online (Sandbox Code Playgroud)
{
"_id" : ObjectId("547d916a660729dd531f145d"),
"birthday" : "1983-06-28",
"zipcode" : "12345",
"address" …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我想在不丢失数据的情况下将一对多转换为多对多:
从:
/**
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\FoodAnalytics\Recipe", inversedBy="medias")
* @ORM\JoinColumn(name="recipeId", referencedColumnName="id", onDelete="CASCADE")
*/
protected $recipe;
Run Code Online (Sandbox Code Playgroud)
至:
/**
* @ORM\ManyToMany(targetEntity="\AppBundle\Entity\FoodAnalytics\Recipe", inversedBy="medias")
* @ORM\JoinTable(
* name="media_recipes",
* joinColumns={@ORM\JoinColumn(name="mediaId", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="recipeId", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
protected $recipes;
Run Code Online (Sandbox Code Playgroud)
当我抛弃我的学说谢谢更新时,它说它会丢弃数据,而不是我想要的:
CREATE TABLE media_recipes (mediaId INT UNSIGNED NOT NULL, recipeId INT UNSIGNED NOT NULL, INDEX IDX_C2BE64FC27D9F5AC (mediaId), INDEX IDX_C2BE64FC6DCBA54 (recipeId), PRIMARY KEY(mediaId, recipeId)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
ALTER TABLE media_recipes ADD CONSTRAINT FK_C2BE64FC27D9F5AC FOREIGN KEY (mediaId) REFERENCES media (id) ON …Run Code Online (Sandbox Code Playgroud) 我有两个具有外键关系的实体:product和category。
@Entity(primaryKeys = "id")
public class Product {
public final long id;
@NonNull
public final String name;
@ForeignKey(entity = Category.class, parentColumns = "id", childColumns = "categoryId")
public final long categoryId;
public Product(long id, @NonNull String name, long categoryId) {
this.id = id;
this.name = name;
this.categoryId = categoryId;
}
}
@Entity(primaryKeys = "id")
public class Category {
public final long id;
@NonNull
public final String name;
public Category(long id, @NonNull String name) {
this.id = id; …Run Code Online (Sandbox Code Playgroud) mysql ×4
database ×3
sql ×3
doctrine-orm ×2
symfony ×2
android ×1
android-room ×1
doctrine ×1
entity ×1
java ×1
jpa ×1
mongodb ×1
postgresql ×1
python ×1
python-3.x ×1
sqlalchemy ×1