我在重新创建Users和Items之间具有一对多(1:M)关系的数据库时遇到了一些麻烦。
这很简单,是的;但是,每个Item 都属于某个类别(例如,汽车、船或飞机),并且每个类别都有特定数量的属性,例如:
Car
结构体:
+----+--------------+--------------+
| PK | Attribute #1 | Attribute #2 |
+----+--------------+--------------+
Run Code Online (Sandbox Code Playgroud)
Boat
结构体:
+----+--------------+--------------+--------------+
| PK | Attribute #1 | Attribute #2 | Attribute #3 |
+----+--------------+--------------+--------------+
Run Code Online (Sandbox Code Playgroud)
Plane
结构体:
+----+--------------+--------------+--------------+--------------+
| PK | Attribute #1 | Attribute #2 | Attribute #3 | Attribute #4 |
+----+--------------+--------------+--------------+--------------+
Run Code Online (Sandbox Code Playgroud)
由于属性(列)数量的这种多样性,我最初认为为每个Category创建一个单独的表是个好主意,因此我会避免多个NULL,从而更好地利用索引。
虽然一开始看起来不错,但我找不到通过数据库创建Items和Categories之间关系的方法,因为至少以我作为数据库管理员的经验来看,在创建外键时,我明确地通知了数据库表名和列。
最后,我想要一个可靠的结构来存储所有数据,同时拥有所有方法来列出用户可能通过一个查询拥有的所有 …