将泛化转换为 mysql 方案

发布于 2024-11-04 05:32:12 字数 308 浏览 1 评论 0原文

我画了这个布局方案,但现在我需要转换为“mysql布局”。所以泛化必须使用两个连接表,对吗? (一个用于学生,另一个用于工人)

关于多重性,用户可以是工人或学生,但一个用户只能是一个工人,一个工人只能是一个用户?这没有多大意义......?

基本上,我如何将这个泛化转换为可以为 mysql 代码执行的东西。

谢谢

在此处输入图像描述

i drew this layout scheme, but now i need to convert for a "mysql layout". So the generalization must use two junction tables, correct? (one for student and other for worker)

An about the multiplicity, users can be workers or students, but one user only can be one worker and one worker only can be an user? this does not make much sense...?

basically, how i can convert this generalization for something that can be executable for mysql code.

thanks

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

分分钟 2024-11-11 05:32:13

ORM 有 3 种方法可以做到这一点。

第一种方法是给它们每个单独的表并连接这些表。 (3tables)

第二种方法仅在您的用户类是抽象类的情况下才有效,然后您为子类使用 2 个表。

最后也是我最喜欢的方式。
您将所有内容都放入一个表中,并引入一个鉴别器列。
基本上制作一个包含用户、学生和工人所有字段的表。
为类型添加一个额外的列并相应地填充它们。
您可以使用鉴别器列轻松选择所有学生/工作人员,并且不必发送垃圾邮件连接。缺点是占用额外空间。

There are 3 ways ORM's do it

First way is give them each a separate table and join the tables. (3tables)

Second way only works if your users class is abstract, then then you take 2 tables for your sub-classes.

And the last and my favorite way.
you stuff everything in one table, and introduce a discriminator column.
basically make a table containing all the fields of users, student and worker.
add an extra column for the type and fill em up accordingly.
You can select all students / workers easily using the discriminator column, and you don 't have to spam joins. The downside is it takes up extra space.

二智少女猫性小仙女 2024-11-11 05:32:13

处理此问题的一种方法是定义三个表:用户、工人和学生。工人和学生表都有一个 user_id 字段,该字段是与用户表中同一字段关联的外键。

One way to handle this is to define three tables: users, workers, and students. The workers and students tables each has a user_id field that is a foreign key tied to the same field in the users table.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文