SQL 中的多态关联
Polymorphic Associations in SQL
我正在创建一个项目,其中包含电影和连续剧的大型数据库,它们都在单独的 table 中。现在我有其他 tables 像 Country 来指定电影 or/and 系列的制作国家。如果我想在多对多关系中执行此操作,则需要连接 table 一个用于电影,一个用于意甲。它看起来像这样:
DB with separate connection tables.
很多table,所以我在寻找其他解决方案,我找到了这个article and the "Using one data entity per class" method seems to be best for me. I implemented it like that: DB with combined connection table。
第二个实现似乎不错,但我面临一个问题,那就是复杂的插入。要插入新电影,我需要首先添加新作品,然后插入电影并选择刚刚创建的作品 ID。
我的问题是它可以通过某种方式修复吗?不能从电影 table 自动递增吗?
我正在使用 10.1.36-MariaDB,我真的很抱歉我的英语不好 :c
由于电影和剧集只有一栏不同(票房),因此将两个 table 放在一起并让剧集的票房 NULL
是有意义的。我不明白 Production
的必要性,但它似乎增加了与它节省的一样多的复杂性。尝试摆脱它。
我建议 Country
的 id 是标准的 2 字母代码。这将更加紧凑并消除一些东西。
连接 table 没有好的理由 id
。参见 many-to-many tips。这些提示将加快您的许多查询速度,并节省 space.
"Polymorphic" 和许多其他教科书中的整洁内容不一定适用于关系数据库。
我正在创建一个项目,其中包含电影和连续剧的大型数据库,它们都在单独的 table 中。现在我有其他 tables 像 Country 来指定电影 or/and 系列的制作国家。如果我想在多对多关系中执行此操作,则需要连接 table 一个用于电影,一个用于意甲。它看起来像这样: DB with separate connection tables.
很多table,所以我在寻找其他解决方案,我找到了这个article and the "Using one data entity per class" method seems to be best for me. I implemented it like that: DB with combined connection table。
第二个实现似乎不错,但我面临一个问题,那就是复杂的插入。要插入新电影,我需要首先添加新作品,然后插入电影并选择刚刚创建的作品 ID。
我的问题是它可以通过某种方式修复吗?不能从电影 table 自动递增吗?
我正在使用 10.1.36-MariaDB,我真的很抱歉我的英语不好 :c
由于电影和剧集只有一栏不同(票房),因此将两个 table 放在一起并让剧集的票房 NULL
是有意义的。我不明白 Production
的必要性,但它似乎增加了与它节省的一样多的复杂性。尝试摆脱它。
我建议 Country
的 id 是标准的 2 字母代码。这将更加紧凑并消除一些东西。
连接 table 没有好的理由 id
。参见 many-to-many tips。这些提示将加快您的许多查询速度,并节省 space.
"Polymorphic" 和许多其他教科书中的整洁内容不一定适用于关系数据库。