sql - 关系数据库设计 (MySQL)

标签 sql mysql database database-design

我现在正在为基于“人才”的应用程序设计我的数据库,例如:

  • 模特
  • 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/

相关文章:

mysql - 如何在Windows上的mysql中创建新服务器?

php - 使用 MySQL 和 PHP 显示一组随机的 10 个问题和答案

mysql - 在每次更新时触发触发,而不仅仅是一列

Cassandra 在写入/更新之前读取

php - 如何使用 PHP 从表单将数据插入到 mySQL 数据库中?

sql - 在 PostgreSQL 结果中连接字符串

php - 将 mysql 行传递给评分算法?

sql - 在一个查询中选择两个计数

mysql - LIKE 不起作用后不在

c# - 如果我输入搜索参数,如何让机器人框架机器人发回数据库的单元格?