Optimized database schema

This commit is contained in:
Kevin Frantz 2018-11-04 12:00:35 +01:00
parent b292082c1f
commit c060dff873
5 changed files with 17 additions and 9 deletions

View File

@ -19,12 +19,11 @@ use App\Entity\Source\Collection\TreeCollectionSourceInterface;
/** /**
* @author kevinfrantz * @author kevinfrantz
* *
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/inheritance-mapping.html
* @ORM\Entity * @ORM\Entity
* @ORM\Table(name="source") * @ORM\Table(name="source")
* @ORM\InheritanceType("JOINED") * @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"user" = "UserSource","name" = "NameSource","collection" = "App\Entity\Source\Collection\AbstractCollectionSource","operation"="App\Entity\Source\Operation\AbstractOperation"}) * @ORM\DiscriminatorMap({"data" = "App\Entity\Source\Data\AbstractDataSource", "collection" = "App\Entity\Source\Collection\AbstractCollectionSource","operation"="App\Entity\Source\Operation\AbstractOperation"})
*/ */
abstract class AbstractSource extends AbstractEntity implements SourceInterface abstract class AbstractSource extends AbstractEntity implements SourceInterface
{ {

View File

@ -1,9 +1,18 @@
<?php <?php
namespace App\Entity\Source\Data; namespace App\Entity\Source\Data;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\Source\AbstractSource; use App\Entity\Source\AbstractSource;
/**
* @author kevinfrantz
*
* @ORM\Entity
* @ORM\Table(name="source_data")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"user" = "UserSource","name" = "NameSource"})
*/
abstract class AbstractDataSource extends AbstractSource implements DataSourceInterface abstract class AbstractDataSource extends AbstractSource implements DataSourceInterface
{ {
} }

View File

@ -8,7 +8,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/** /**
* @author kevinfrantz * @author kevinfrantz
* @ORM\Table(name="source_name") * @ORM\Table(name="source_data_name")
* @ORM\Entity(repositoryClass="App\Repository\NameSourceRepository") * @ORM\Entity(repositoryClass="App\Repository\NameSourceRepository")
*/ */
final class NameSource extends AbstractDataSource implements NameSourceInterface final class NameSource extends AbstractDataSource implements NameSourceInterface

View File

@ -10,7 +10,7 @@ use App\Entity\UserInterface;
/** /**
* @author kevinfrantz * @author kevinfrantz
* @ORM\Table(name="source_user") * @ORM\Table(name="source_data_user")
* @ORM\Entity(repositoryClass="App\Repository\UserSourceRepository") * @ORM\Entity(repositoryClass="App\Repository\UserSourceRepository")
*/ */
final class UserSource extends AbstractDataSource implements UserSourceInterface final class UserSource extends AbstractDataSource implements UserSourceInterface

View File

@ -7,8 +7,8 @@ use FOS\UserBundle\Model\User as BaseUser;
use App\Entity\Attribut\SourceAttribut; use App\Entity\Attribut\SourceAttribut;
use App\Entity\Attribut\IdAttribut; use App\Entity\Attribut\IdAttribut;
use App\Creator\Modificator\Entity\LawModificator; use App\Creator\Modificator\Entity\LawModificator;
use App\Entity\Source\UserSourceInterface; use App\Entity\Source\Data\UserSourceInterface;
use App\Entity\Source\UserSource; use App\Entity\Source\Data\UserSource;
use App\Entity\Attribut\VersionAttribut; use App\Entity\Attribut\VersionAttribut;
/** /**
@ -22,7 +22,7 @@ class User extends BaseUser implements UserInterface
/** /**
* @var UserSourceInterface * @var UserSourceInterface
* @ORM\OneToOne(targetEntity="App\Entity\Source\UserSource",cascade={"persist", "remove"}) * @ORM\OneToOne(targetEntity="App\Entity\Source\Data\UserSource",cascade={"persist", "remove"})
* @ORM\JoinColumn(name="source_user_id", referencedColumnName="id") * @ORM\JoinColumn(name="source_user_id", referencedColumnName="id")
*/ */
protected $source; protected $source;