【问题标题】:Can I create a few tables in one table, mysql? [closed]我可以在一个表中创建几个表吗,mysql? [关闭]
【发布时间】:2012-11-17 15:15:31
【问题描述】:

我有一个包含 6 个表的数据库。

其中一个表名为类别,其中包含 5 或 6 个类别。

例如:电影类有喜剧、剧情、惊悚、恐怖、言情等子类。

那么我可以在表格中添加子类别,还是应该像表格一样创建它们?

如果我有很多数据要添加到数据库中,有没有更简单的方法可以做到?

我正在使用 xampp

【问题讨论】:

  • 您能否澄清一下子类别的含义以及它们与类别和/或电影的关系?

标签: mysql database xampp categories


【解决方案1】:

category表中添加一个categoryOf字段,它将用于存储'父类别'的id。

对于子类别,使用此字段指向它是子类别的类别。 将(主要)类别条目的字段留空

例如:

id  name         categoryOf
0   comedy       NULL
1   drama        NULL
2   sub-comedy   0
3   sub-drama    1
4   sub-comedy2  0

注意:使用此方法,您甚至可以根据需要添加子子类别...

【讨论】:

  • "使用这种方法,你甚至可以根据需要添加子子类别" - 可以,但是因为 MySQL 不支持递归函数,所以很难查询和维护。如果你想获取所有喜剧,包括它的后代怎么办?在 MySQL 中,这种分层数据通常最好使用嵌套集或传递闭包表进行建模。
  • 问题是关于存储的,这种方法仍然有效并且非常简单,即使是子子类别。使用一个查询在一个查询中获取所有类别及其所有子类别可能/不可能/困难,但(尚)不需要在一个查询中这样做。
  • 我的观察是,虽然这个邻接表模型很容易写入,但通常很难读取。我只是为了他人的利益发表评论,即确实存在可能更有用/适用的替代方案,具体取决于个人的需要。如果有人将存储视为只写,那么它的用途是值得怀疑的。 :)
  • 同意。尽管我会将其更改为“通常很难有效地阅读”。使用 PHP 使用多个查询读取所有需要的数据并不难(只是效率低下)
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 2015-03-01
  • 2018-06-28
  • 2018-12-05
  • 1970-01-01
  • 2011-10-17
  • 2017-10-26
  • 2021-11-12
相关资源
最近更新 更多