我现在正在为基于“人才”的应用程序设计我的数据库,例如:
- 模特
- Actor
- 歌手
- 舞者
- 音乐家
我昨天开始了一个类似的问题,并且从回答中取得了一些进展,但我认为现在开始一个新问题会更容易。所以这就是我现在所拥有的:
Table talent:
- id
- name
Table subtalent:
- id
- name
- talent_id (FK)
Table user:
- id
- name
任何在网站上注册的用户都可以为这些人才中的一个或多个创建个人资料。人才可以有子人才,例如 Actor 可以是电视 Actor 或戏剧 Actor 或配音 Actor 。
现在我需要知道以下问题的答案:
1) 我应该如何存储用户拥有的人才和子人才。我假设还需要两个表(talent_user 和 subtalent_user)?
2) 用户可以指定他们拥有的每个 TOP LEVEL 人才的具体信息。每个人才的字段会有所不同,所以我认为这将需要另一组表格?这些将如何链接到用户记录,即外键是什么?
最佳答案
您是否需要拥有次要人才? IE。在某些情况下,您有许多不同级别的天赋,父天赋有子天赋,但父天赋是另一个天赋的子天赋。哇,好啰嗦! :)
在这种情况下,您将使用自引用表。如下图
Table:Talents
- TalentID
- ParentTalentID (References TalentID column, NULL if this Talent is a top level)
- Name
然后您可以拥有任意数量的类别、子类别。
然后您将需要一个连接表,因为一个用户可以拥有多个人才,一个人才可以属于多个用户。
Table:UserTalents
- TalentID (Fk)
- UserID (Fk)
Table:Users
- UserID (Pk)
- Name
关于sql - 关系数据库设计 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335668/