mysql - 将泛化转换为 mysql 方案

标签 mysql database database-design uml

我画了这个布局方案,但现在我需要转换为“mysql 布局”。所以 generalization 必须使用两个 junction table,对吗? (一个给学生,一个给 worker )

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

基本上,我如何将此泛化转换为可以为mysql代码执行的内容。

谢谢

enter image description here

最佳答案

ORM 有 3 种方法

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

第二种方法只有在你的用户类是抽象类时才有效,然后你为你的子类取 2 个表。

最后也是我最喜欢的方式。 你把所有东西都塞进一张表,然后引入一个鉴别器列。 基本上制作一个包含用户、学生和 worker 所有字段的表。 为类型添加一个额外的列并相应地填充它们。 您可以使用鉴别器列轻松选择所有学生/ worker ,而不必垃圾邮件加入。缺点是它会占用额外的空间。

关于mysql - 将泛化转换为 mysql 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820834/

相关文章:

sql - 数据库设计 - NULL 外键

PHP - 页面刷新时重新加载新记录

php - 数据库标题页中的回显ID

sql - 如何在每个 SQLite 行中插入唯一 ID?

java - 单表继承(使用 Ebean + Play! 框架)

mysql : Best way to deal with data like average rating of restaurants etc?

mysql - 来自带有过滤器的 MySQL 的年龄

mysql - sql 检查行是否是另一个表的子集

sql - 根据业务逻辑获取第一个join结果

sql 查询将现有列条目转换为行标题