Mysql 使用一个值作为另一个表的标题——这是一种糟糕的做法吗?
假设我有下表:Mysql 使用一个值作为另一个表的标题——这是一种糟糕的做法吗?,mysql,Mysql,假设我有下表: Table: Residents ID Name Species ------------------- 1 Bob Human 2 Fluffy Cat 3 Laura Human 根据物种的不同,我想参考不同的表格以获取更多信息。“种类”列下给出的值是相应表的名称 Table: Cat id owner_id fur_color ---------------------------- 2 1
Table: Residents
ID Name Species
-------------------
1 Bob Human
2 Fluffy Cat
3 Laura Human
根据物种的不同,我想参考不同的表格以获取更多信息。“种类”列下给出的值是相应表的名称
Table: Cat
id owner_id fur_color
----------------------------
2 1 white
Table: Human
id email
---------------
1 bob@gmail.com
3 laura@gmail.com
这样做是不好的做法吗?如果是这样,做类似事情的首选方法是什么?最好有一个通用的属性和值表: 表:属性:
id owner_id attr value
1 1 email bob@gmail.com
2 3 email laura@gmail.com
3 2 fur_color white
简言之,是的。正如@barmar在他的评论中提到的,没有办法将列值连接到表名(除了使用PHP之类的脚本语言动态构建查询之外) 花点时间分析一下表以及它们之间的关系。从您的示例扩展,人与宠物/动物之间存在“多对一”关系,因为人可以有多个动物,但动物不能有多个主人。如果动物可以有一个以上的主人,你就有一种“多对多”的关系 在模式方面,您的模式在最基本的级别上可能如下所示: 居民
- 身份证
- 名字
- 电子邮件
- 身份证
- OwnerID(必须与居民表中的ID匹配)
- 名字
- 身份证
- AnimalID(必须与动物表中的ID匹配)
- 属性
- 价值观
- 身份证
- OwnerID(必须与居民表中的ID匹配)
- AnimalID(必须与动物表中的ID匹配)
2
?