【问题标题】:primary and foreign key in same table or not主键和外键是否在同一张表中
【发布时间】:2013-01-06 15:36:52
【问题描述】:

我有一个类别字段。每个类别最多有一个父级。 哪个设计更好?

1)一个表:category_parent为外键(与category_id相关),category_id为主键

category_id | category_parent | category_name

2)两个表

表1

catgory_id | category_name

表2

id | category | category_parent

category,category_parent为外键(与category_id有关),category_id为主键

【问题讨论】:

    标签: mysql foreign-keys foreign-key-relationship


    【解决方案1】:

    你说每个节点都只有父节点。根据您的要求,第一个选择是更好的设计。

    第二个选项只有在您需要一个节点有多个父节点时才真正强制执行。

    【讨论】:

    • 如果大多数类别没有父级怎么办。所以 category_parent 的大部分是 null 但在设计 2 中我们没有这个问题
    • 如果一个对象没有父对象,那么有一个空父对象是完全可以的。
    【解决方案2】:

    显然第一个,因为每个节点只有一个父节点。所以,不会有冗余,因为类别名称不能重复..

    如果可以有多个父级,则类别名称将在表中重复。在这种情况下,您将创建两个表。

    【讨论】:

    • 如果大多数类别没有父级怎么办。所以 category_parent 的大部分是 null 但在设计 2 中我们没有这个问题
    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2023-03-25
    • 2015-02-26
    相关资源
    最近更新 更多