gpt4 book ai didi

database-design - 数据库中的多值属性

转载 作者:行者123 更新时间:2023-12-04 07:13:13 27 4
gpt4 key购买 nike

关系数据库应如何设计为处理多值属性?

编辑:要详细说明:

为此,我可以想到两种方法-

  • 尝试将逗号分隔的值放在字段中,这看起来有点笨拙。
  • 为该字段创建另一个表,然后将多个值转到该字段。如果我有太多这种类型的字段,这可能会导致大量的表。

  • 问题是:
  • 还有其他处理方式吗?
  • 通常使用以上两种方法中的哪一种?

  • 提前致谢

    最佳答案

    在传统的关系数据库设计中,每一行和每一列必须仅存储一个值。

    不要存储逗号分隔的列表或类似的古怪内容。

    例如,假设一个运动队有七个成员。您可以这样做:

    CREATE TABLE team (
    team_id INT PRIMARY KEY,
    team_name VARCHAR(50),
    team_members VARCHAR(200)
    );
    INSERT INTO team VALUES (1,'Dwarfs', 'Sleepy,Dopey,Sneezy,Happy,Grumpy,Doc,Bashful')

    但是最好这样做:
    CREATE TABLE team (
    team_id INT PRIMARY KEY,
    team_name VARCHAR(50),
    );
    INSERT INTO team (team_name) VALUES ('Dwarfs');

    CREATE TABLE team_members (
    team_id INT,
    member_name VARCHAR(20),
    FOREIGN KEY (team_id) REFERENCES team(team_id)
    );
    INSERT INTO team_members VALUES
    (LAST_INSERT_ID(), 'Sleepy'),
    (LAST_INSERT_ID(), 'Dopey'),
    (LAST_INSERT_ID(), 'Sneezy'),
    (LAST_INSERT_ID(), 'Happy'),
    (LAST_INSERT_ID(), 'Grumpy'),
    (LAST_INSERT_ID(), 'Doc'),
    (LAST_INSERT_ID(), 'Bashful');

    nb: LAST_INSERT_ID()是MySQL函数。在其他品牌的数据库中也可以使用类似的解决方案。

    关于database-design - 数据库中的多值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287794/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com