如何设计关系数据库来处理多值属性?
编辑:详细说明:
我有两种方法可以做到这一点 -
问题是:
提前致谢
Bil*_*win 15
在传统的关系数据库设计中,每行和每列只能存储一个值.
不要存储以逗号分隔的列表或任何古怪的东西.
例如,运动队有七名成员.你可以这样做:
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')
Run Code Online (Sandbox Code Playgroud)
但最好这样做:
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');
Run Code Online (Sandbox Code Playgroud)
nb: LAST_INSERT_ID()是一个MySQL函数.其他品牌的数据库也提供类似的解决方案.