推进:没有交叉表的多对多关系

Posted

技术标签:

【中文标题】推进:没有交叉表的多对多关系【英文标题】:Propel: many-to-many relationship without crosstable 【发布时间】:2014-01-27 09:57:02 【问题描述】:

我最近接到学校的一个任务,我必须为 ORM 创建一个 Propel Schema。 这并不是真正的问题,但其中一个要求是以多对多关系连接其中两个表。

通常,您会使用交叉表(保存两个表中的属性)来做到这一点,但我们的老师说,如果没有这样的交叉表,这也是可能的(甚至是必需的)。

如何在 Propel 中创建这样的?

有问题的 ERD:

http://files.f-o-g.eu/b8f8a9

(我被困在 VIP Einladung)

到目前为止,我有这个:

<?xml version="1.0" encoding="UTF-8"?>
<database name="orm1" defaultIdMethod="native">
    <table name="einladung" phpName="Einladung">
            <column name="nummer" type="INTEGER" primaryKey="true" autoIncrement="true" />
            <column name="fbuffet" type="BOOLEAN" />
            <column name="splatz" type="INTEGER" />
    </table>
    <table name="sorganisation" phpName="SpendenOrganisation">
            <column name="name" type="VARCHAR" size="255" primaryKey="true" required="true" />
            <column name="adresse" type="VARCHAR" size="255" />
    </table>
    <table name="wveranstaltung" phpName="WVeranstaltung">
            <column name="titel" type="VARCHAR" size="255" primaryKey="true" required="true" />
            <column name="datum" type="DATE" required="true" />
            <column name="ort" type="VARCHAR" size="255"/>

    </table>
    <table name="vip" phpName="Vip">
            <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
            <column name="vname" type="VARCHAR" size="255" required="true" />
            <column name="nname" type="VARCHAR" size="255" required="true" />
    </table>
</database>

有人知道吗?

【问题讨论】:

希望是英文的。我什至找不到这些表之间的共同链接! 翻译:左侧 (VIP) (vorname= firstname, nachname=lastname);右侧:Einladung(邀请)(freies Buffet = 免费自助餐,sitzplatz = 座位,nummer = 号​​码);介于 (bekommt = get) (spenden betrag = 捐赠金额) 【参考方案1】:

没有交叉表就不可能创建 m 对 m 关系。

我猜你的VIP -&gt; Einladung 关系是错误的。应该是一对一的关系。

【讨论】:

嗯,关系是正确的(这就是我们得到的规范)。无论如何,正如我所猜测的,没有这样的交叉表是不可能的。将接受您的回答。

以上是关于推进:没有交叉表的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章

数据库优先方法中与联结表的多对多关系

关于多对多关系的问题:完全迭代

hibernate关联关系(多对多)

Hibernate学习笔记 --- 创建基于中间关联表的多对多映射关系

Laravel 定义同一张表的多对多关系

Laravel Datatable 与多个表的多对多关系